Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: extracting from text

by misc (Pilgrim)
on Dec 10, 2007 at 11:28 UTC ( #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
Node Status?
node history
Node Type: note [id://656093]
help
Chatterbox?
[thezip]: Efficient, that one.
[erix]: my dog could do the classic mouse jump (never caught a mouse :)
[erix]: he caught a hare once (must have been a young one...)
virtualsue uses arcane git commands to resurrect a file, gets it back into shape and quits for the day
[GotToBTru]: a few years ago, when we had 3 dogs, the largest of them caught a chipmunk, but did not know what to do with it other than hold it in his mouth
[GotToBTru]: my wife told him to spit it out, so he did
[erix]: yeah, modern dogs are cute tjhat way :)
[erix]: except of course, the RHODESIAN LION HOUND ! :)

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (15)
As of 2017-11-17 20:01 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:













    Results (272 votes). Check out past polls.

    Notices?