in reply to extracting from text

Hi, I'd like to suggest a simple approach - It's more easy to change/understand if you read the code some time later.
#!/usr/bin/perl -w use strict; my ($hi_from,$hi_to,$bye_from,$bye_to); while ( my $line = <DATA> ){ $line =~ /^(.?)\D*(\d*)\D*(\d*)/; next if ( !$1 ); # Empty line # print "1: $1 2: $2 3: $3\n"; if ( $1 eq 'h' ){ if ( !defined($hi_from) || $hi_from >= $2 ){ $hi_from = $2; } if ( !defined($hi_to) || $hi_to <= $3 ){ $hi_to = $3; } } if ( $1 eq 'b' ){ if ( !defined($bye_from) || $bye_from >= $2 ){ $bye_from = $2; } if ( !defined($bye_to) || $bye_to <= $3 ){ $bye_to = $3; } } } print "hi_from: $hi_from hi_to: $hi_to\n"; print "bye_from: $bye_from bye_to: $bye_to\n"; __DATA__ hi: 65 abcdefghijklmnopqrst 85 bye: 12 bcdefghijklmnopqrstu 32 hi: 26 sagfsdgsgwsehbbdgops 106 bye: 33 afasdfdfafasaafadfad 53 hi: 89 sagfsdgsgwsehbbdgops 188 bye: 37 afasdfdfafasaafadfad 89
It would be possible to do some cool constructs with map, hashes, ...
However, if you have to change something later, something like this is much more easy to understand and debug. (Although unelegant ).

It's also a matter of the needs you have.

HTH, Michael