Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: contextual substitution with s///?

by mbethke (Hermit)
on Feb 01, 2013 at 16:33 UTC ( #1016581=note: print w/ replies, xml ) Need Help??


in reply to contextual substitution with s///?

What choroba said. Your problem is the missing /m on the substitution so it only tries the first line in the string where it doesn't match.

If you want to split the line into space-separated fields later regardless of their meaning), couldn't you just use split /\s+/? When I have a task like this, I usually write a regex that captures a bunch of fields and ignores others, like this:
my $re = qr{ ^ (\S+ \s+ \S+ \s+ \S+) \s+ # time_stamp: Sep 18 00:00:58 (\S+) \s+ # host: mailgate04 [[:alpha:]]+/([[:alpha:]]+) # process: postfix/smtp: \S+ \s+ # PID: [29259]: (.*) # rest }ox; while(<$log>) { my ($time, $host, $rest) = /$re/o; ... }

In case you're interested in the timestamp field and few other things, you could also think about a simple substr(). The spaces are there just to make it easy to work with fixed field widths.


Comment on Re: contextual substitution with s///?
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (5)
As of 2014-12-25 17:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (161 votes), past polls