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/