> Hi ppl, > > I have to split a file in pieces and I place every segment in an array. > Each segment begins with digit(s). What I want to do is to parse the > array, and for each segement, record its first digits into a scalar so I > can do further manipulations on it (actually I only print the scalar > into a file). > > What I do right now is : > > my $digit = 0; > for (@commands) > { > $digit =~ /^\d+/; > print FILE "DIGIT = $digit \n"; > } >
[snip] There was another response but I think it can be clearer. Right now you are running a test in void context on your string and not capturing either the value itself or the return. Generally you want to test the string, capture your value, and have a warning or some such if it fails. I also prefer we dispense with the use of $_. For instance, foreach my $cmd (@commands) { if ($cmd =~ /^(\d+)/) { print FILE "DIGIT = $1\n"; } else { warn "Invalid command: $cmd\n"; } } If you do not place the regex in a test then you will end up with "empty" values in your file. The parentheses around the \d+ tell the regex to capture the value into the first holder $1. perldoc perlretut perldoc perlre http://danconia.org -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>