Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: extracting from text

by misc (Friar)
on Dec 10, 2007 at 11:28 UTC ( [id://656093]=note: print w/replies, xml ) Need Help??


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.
  • Which size could the file have ?
  • Is speed important ?
  • Do you need some warnings if the file is misformed ?
  • ...

HTH, Michael

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://656093]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (7)
As of 2024-04-25 08:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found