Rob Dixon wrote:
> Matthew J. Avitable wrote:
>>
>> Given the original string ...
>>> my $test =
>>>   'NAS-IP-Address = 192.168.42.1
>>>   .......
>>>   Acct-Unique-Session-Id = "87d380e1881d226c"
>>>   Timestamp = 1177282824';
>>>
>>
>> You could also invoke perl 5.8's ability to treat an in-memory string
>> as a file:
>>
>> ## get a filehandle on $test
>> open(my $fh, '<', \$test) or die "Unable to open scalar ref for
>> reading: $!";
>>
>> while (my $line = <$fh>) {
>
> Hmm. I don't feel this is an improvement over just
>
>  foreach (split /\n/, $line) {
>    :
>  }
>
> or even
>
>  while ($test =~ /(.*\n?)/g) {
>    my $line = $1;
>    :
>  }
>
> to avoid duplicating the whole string at once.
>
>>    ## split on '=' with a max of two resulting fields, clear spaces
>> adjacent to '='.
>>    ## clear newlines as well.
>>    chomp ( my ($k, $v) = split(/\s*=\s*/, $line, 2) );
>
> Why chomp here? You're chomping $k, which /can't/ end in a record, as
> well as $v.
> Just
>
>  chomp $line;
>  my ($k, $v) = split /\s*=\s*/, $line, 2;
>
> is more appropriate.
>
>>
>>    ## clear out the quotes in the value
>>    $v =~ s/"//og;
>
> Why use the /o modifier when there are no variables being interpolated
> into
> the regex?
>
> Even better (in terms of speed) would be
>
>  $v =~ tr/"//d;
>
> although I admit I tend to use s/// exclusively myself.
>
> Also why remove the quotes when the OP didn't say he wanted to, and
> may actually
> need them?
>
>>    ## do something with your key and value:
>>    print "Key is $k,  Value is: $v\n";
>>
>> }
>>
>> close $fh;
>>
>>
>> Reading a file line by line is a fairly recognizable pattern to perl
>> programmers of all levels, so it may assist future maintainers.
>
> ...unless it stops working, when opening a string on a filehandle is a
> fairly /unrecognisable/ pattern, and the maintainer may be stumped!
>
> Cheers,
>
> Rob
>
i have tried all,

and I still stand by my confidence that perl community is still the most
vibrant of all.

Thank you all,

Goksie

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


Reply via email to