Jay Savage wrote:
> On 10/4/06, John W. Krahn <[EMAIL PROTECTED]> wrote:
>> Michael Alipio wrote:
>>
>> > Now, my goal is to adapt that code, particularly
>> > obtaining only Start, IP, User. However, those three
>> > targets are not anymore located at the beginning of a
>> > line.
>> >
>> > "Start" is the date=.time= combination,
>> > "IP" is found after rem_ip=
>> > "User" is found after "user: "
>> >
>> > I'm not really sure how to put my regexp inside my
>> > hash..
>> >
>> > while ( <LOGFILE> ) {
>> >     my %extr = (
>> >         Start => '',
>> >         IP    => '',
>> >         User  => '',
>> >         /what should i put here??/mg
>> >         );
>> >     print "Start:$extr{Start} IP:$extr{IP}
>> > User:$extr{User}\n\n";
>> >     }
>>
>> You don't really need a hash,
> 
> Probably not, but can someone explain what's going on here? It looks
> to me like the code creates a list of k/v pairs to initialize some
> hash keys with empty values, and then continues the list with a series
> of k/v pairs, returned from the match captures, which immediately
> overrides the vlaues for the keys that were just declared. In other
> words, there are two assignments for the same keys in the same list?
> Or is there some magic that happens when a hash is passed a regex in
> list context so that the assignments really only happen once?
> Wouldn't
> 
>    my %extr = (/^(Start|IP|User|End)=(.+)/mg);
> 
> on its own achieve the same result as
> 
>     my %extr = (
>         Start => '',
>         IP    => '',
>         User  => '',
>         End   => '',
>         /^(Start|IP|User|End)=(.+)/mg
>     );
> 
> Or am I missing something?

If one (or more) of the keys is missing, say 'User', and you print
"User:$extr{User}" you will get a warning.  This way all the values will have
a string value and there will be no warning.



John
-- 
Perl isn't a toolbox, but a small machine shop where you can special-order
certain sorts of tools at low cost and in short order.       -- Larry Wall

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to