|
|||||||||||||||||||||||||||
Hvis du insisterer på at hælde matches I $1, $2...osv., så er det nødt
til at foregå I 2 omgange fordi du ikke (antager jeg) kender antallet af
ord I strengen. Derfor er du nødt til at håndtere det I 2 omgange,
ala...
#!/usr/bin/perl -w
use strict;
no strict 'refs';
my $var = "That is not it";
my $rx;
my @matches = $var =~ m/\b(\w+)\b/g;
for ( @matches ) { $rx .= '(\w+)\s+'; }
# Cut sidste \s+
$rx=~s/(.*)\\s\+$/$1/g;
# Fylder $1, $2 osv.
$var=~/$rx/g;
print "matches are ". join(",", @matches)."\n";
print "test is $var\n";
for ( my $i = 1; $i <= scalar( @matches ) && defined( ${$i} ); $i++ ) {
print "\$$i is ".${$i}."\n"; }
Men det dufter af noget pølle at insistere på $1..n som jo er readonly.
Men det præcise svar på "Er det muligt i eet hug at filtrere ord ud i
$1, $2 etc.?" er: "nej, ikke uden at vide mere om strengen.." ;)
/Jesper
> -----Original Message-----
> From: David List [mailto:sslug@sslug
> Sent: 24. februar 2003 14:17
> To: sslug@sslug
> Subject: [PERL] Filtrere ord ud i $1, $2 etc.
>
>
> Er det muligt i eet hug at filtrere ord ud i $1, $2 etc.?
>
> Jeg prøver med det her, men det virker i hvert fald ikke:
>
> my $var = "That is not it";
> my @matches = $var =~ m/\b(\w+)\b/g;
> print "matches are ";
> print join(",", @matches);
> print "\n";
> print "test is ";
> print $var, "\n";
> print "\$1 is ", $1, "\n";
> print "\$2 is ", $2, "\n";
> print "\$3 is ", $3, "\n";
> print "\$4 is ", $4, "\n";
> print "\$5 is ", $5, "\n";
>
> --
> Med venlig hilsen / Best regards
> David List
>
>
|
||||||||||||||
|
||||||||||||||