perl string match

K

Kelvin

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";
}
 
M

Mark Clements

Kelvin said:
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
 
J

Joe Smith

Mark said:
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
 
M

Mark Clements

Joe said:
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
 
P

Paul Lalli

Oliver S?der said:
(e-mail address removed) (Kelvin) wrote in message

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
 
T

Tore Aursand

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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,020
Latest member
GenesisGai

Latest Threads

Top