[vox-tech] dumb perl question
Jim Angstadt
vox-tech@lists.lugod.org
Sat, 12 Jan 2002 16:22:20 -0800 (PST)
--- Peter Jay Salzman <p@dirac.org> wrote:
> the string that i'm matching though is $_, not
> $temperature. $_ holds a
> filename, like "100.energy", and i'd like to extract
> the "100" from the
> filename and put it in $temperature.
>
> doesn't
>
> $temperature =~ s/(\d+).*/$1/;
>
> assume that $temperature is the object holding
> "100.energy"?
Yes it does.
>
> note that i'm being greedy here -- this DOES work:
>
> /(\d+).*/; # match "100" in $_
> $temperature = $+; # put it in $temperature
>
> i just want to do it in a single line. :) also,
> i'd like to do it
> without destroying the contents of $_ if possible.
Then your approach is the only way I know. But, you
may want to take care of 'no match' cases. $+ is the
last match. If your match fails, then a prior match
will be picked up, *I think*. (Not tested.)
One other point. the '.' is a metacharacter that
matches anything except a newline character. So .*
matches the rest of the line. It you want to match a
'.' then escape it:
# -----
use strict;
$_ = '100.energy';
/^(\d*)\./;
print "temp: $1\n";
# -----
Good luck.
Jim
__________________________________________________
Do You Yahoo!?
Send FREE video emails in Yahoo! Mail!
http://promo.yahoo.com/videomail/