That'll work, but on a finer point, if you need to be thinking about
optimization at the moment:
($substring1 = $string) =~ s/.*\\(.*)/$1/;
....is about 4 times slower than:
($substring2 = $string) =~ s/.*\\//;
....because the second one doesn't have to store the matched value inside the
parens in $1.
In test below:
substring1 code took: 20 wallclock secs (20.05 usr + 0.00 sys = 20.05 CPU)
substring2 code took: 5 wallclock secs ( 5.15 usr + 0.00 sys = 5.15 CPU)
So it can be best to use $1 thru $9 only when necessary if speed matters.
Gary
======
Notes:
In this test script we do the substitution a million times for each method and
then print the benchmark results. You can tailor this script to check the
comparison on any two or more different ways of doing something.
#!perl.exe
use Benchmark;
$string ='C:\PerlScripts\TestSamples\StringTest.pl';
# substring1 method
$i = 0;
$t0 = new Benchmark;
while ($i < 1000000) {
($substring1 = $string) =~ s/.*\\(.*)/$1/;
$i++;
}
$t1 = new Benchmark;
$td = timediff($t1, $t0);
print "substring1 code took: ", timestr($td), "\n\n";
# substring2 method
$i = 0;
$t0 = new Benchmark;
while ($i < 1000000) {
($substring2 = $string) =~ s/.*\\//;
$i++;
}
$t1 = new Benchmark;
$td = timediff($t1, $t0);
print "substring2 code took: ", timestr($td), "\n\n";
__END__
Printed result:
substring1 code took: 20 wallclock secs (20.05 usr + 0.00 sys = 20.05 CPU)
substring2 code took: 5 wallclock secs ( 5.15 usr + 0.00 sys = 5.15 CPU)
> -----Original Message-----
> From: Shawn [mailto:[EMAIL PROTECTED]]
> Sent: Sunday, January 06, 2002 1:03 PM
> To: [EMAIL PROTECTED]; David
> Subject: Re: Using regexp to get a substring
>
>
> "David" <[EMAIL PROTECTED]> wrote in message
> [EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> > Hello All,
> >
> > I am beginner and need some helps. Thanks a lot!
> >
> > The question is, if I have a string, for example
> > "C:\PerlScripts\TestSamples\StringTest.pl", how do I use regexp to parse
> > this string and get substring after the last backslash ("StringTest.pl").
>
> Hey David,
> This should work for you:
>
> use strict;
> my $String='C:\PerlScripts\TestSamples\StringTest.pl';
> (my $substring =$string) =~s/.*\\(.*)/$1/;
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]