For Programmers: Free Programming Magazines  


Home > Archive > PERL Miscellaneous > September 2004 > perl string match









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author perl string match
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)
Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com