|
|
| Kelvin 2004-09-27, 3:56 am |
| Hi All,
Need a bit of help in pattern matching :) How to accomplish the
code below of the string "test" is inside a variable? (e.g. $x="test")
if ($k =~ /^test/)
{
print "1\n";
}
| |
| Mark Clements 2004-09-27, 8:58 am |
| Kelvin wrote:
> Hi All,
>
> Need a bit of help in pattern matching :) How to accomplish the
> code below of the string "test" is inside a variable? (e.g. $x="test")
>
>
>
> if ($k =~ /^test/)
> {
> print "1\n";
> }
my $searchString = "test";
if ( $k =~ /^$searchString/) {
}
man perlop
also check out the /o switch
Mark
| |
| Joe Smith 2004-09-27, 8:58 am |
| Mark Clements wrote:
> man perlop
>
> also check out the /o switch
Hmmm. 'perldoc perlop' does not state whether the lack of /o has as
much of a performance impact in perl-5.8 as it had in earlier versions.
-Joe
| |
| Mark Clements 2004-09-27, 8:58 am |
| Xref: number1.nntp.dca.giganews.com comp.lang.perl.misc:551897
Joe Smith wrote:
> Mark Clements wrote:
>
>
>
> Hmmm. 'perldoc perlop' does not state whether the lack of /o has as
> much of a performance impact in perl-5.8 as it had in earlier versions.
> -Joe
a quick test with 5.8 on Solaris 9 shows very little difference.
use strict;
use warnings;
use Benchmark::Timer;
my $searchExpression=shift;
my $text=shift;
my $iterations=shift;
my $timer=Benchmark::Timer->new();
$timer->start("overall");
for(my $ii=0;$ii<$iterations;$ii++){
$timer->start("iteration");
$text=~/$searchExpression/;
$timer->stop("iteration");
$timer->start("iterationwitho");
$text=~/$searchExpression/o;
$timer->stop("iterationwitho");
}
$timer->stop("overall");
$timer->report();
redwood 24170 $ perl ./timere.pl ^asdf thisissometext 10000
1 trial of overall (1.014s total)
10000 trials of iteration (100.802ms total), 10us/trial
10000 trials of iterationwitho (98.526ms total), 9us/trial
redwood 24171 $ perl ./timere.pl ^asdf thisissometext 10000
1 trial of overall (1.011s total)
10000 trials of iteration (100.544ms total), 10us/trial
10000 trials of iterationwitho (96.909ms total), 9us/trial
redwood 24172 $ perl ./timere.pl ^asdf thisissometext 10000
1 trial of overall (938.571ms total)
10000 trials of iteration (93.197ms total), 9us/trial
10000 trials of iterationwitho (89.684ms total), 8us/trial
assuming my test is correct...
Mark
| |
| Oliver S?der 2004-09-27, 8:58 am |
| if ($k =~ /^test/)
{
$x=$_;
}
kcassidy@kakelma.mine.nu (Kelvin) wrote in message news:<26b862d9.0409262250.22e46f72@posting.google.com>...
> Hi All,
>
> Need a bit of help in pattern matching :) How to accomplish the
> code below of the string "test" is inside a variable? (e.g. $x="test")
>
>
>
> if ($k =~ /^test/)
> {
> print "1\n";
> }
| |
| Paul Lalli 2004-09-27, 8:58 am |
|
"Oliver S?der" <osoeder@gmx.de> wrote in message
news:45c6c8e6.0409270408.67e5eec1@posting.google.com...
> kcassidy@kakelma.mine.nu (Kelvin) wrote in message
news:<26b862d9.0409262250.22e46f72@posting.google.com>...
$x="test")[color=darkred]
>
> if ($k =~ /^test/)
> {
> $x=$_;
> }
Please post your reply below what you are replying to.
Can you please explain exactly what it is you think this code is doing?
Paul Lalli
| |
| Tore Aursand 2004-09-27, 4:01 pm |
| On Sun, 26 Sep 2004 23:50:04 -0700, Kelvin wrote:
> Need a bit of help in pattern matching :) How to accomplish the
> code below of the string "test" is inside a variable? (e.g. $x="test")
>
> if ($k =~ /^test/)
> {
> print "1\n";
> }
If you just need to find out if a variable is inside another variable, you
shouldn't use regular expressions. This will do (and it's faster);
my $k = 'This is a test';
my $x = 'test';
if ( index($k, $x) >= 0 ) {
# Match
}
Eventually, you can check if 'index(...)' equals 0 if you want to check if
the string begins with $x.
--
Tore Aursand <tore@aursand.no>
"Writing modules is easy. Naming modules is hard." (Anno Siegel, on
comp.lang.perl.misc)
|
|
|
|