SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

RE: [PERL] Filtrere ord ud i $1, $2 etc.



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
> 
> 


 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 19:55
Denne side vedligeholdes af MHonArc .