Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Perl > Perl Misc > help regex and substitutions

Reply
Thread Tools

help regex and substitutions

 
 
john swilting
Guest
Posts: n/a
 
      08-31-2007
I recopied the chaphitre 5
#!/usr/bin/perl -w

use strict;
use diagnostics;

my @conf = ('XferMethod',
'rsync',
'XferLogLevel',
'1',
'RSyncShare',
'___1___',##they is these 2 pattern
'ClientNameAlias',
'___2___');##they is pattern


print @conf,"\n";
my @substitution = @conf;
my $motif =qr/___[1-9][0-9]?___/is;
my @regexes = ();
my @motif = ();
foreach $motif ( @motif ) {
push @regexes, qr/$motif/;
}

foreach my $elem ( @substitution ) {
foreach my $re ( @regexes ) {##the loop however turns well#scalar(@regexes
if ( $elem =~ /$re/) {##one do not arrive to this line
print "$elem egal $re\nentrer la valeur\n";
chop ($elem =<STDIN>);
print "nouvelle valeur de",$elem,"\n";
}
}
}

 
Reply With Quote
 
 
 
 
john swilting
Guest
Posts: n/a
 
      08-31-2007
Jim Gibson wrote:

> In article <46d83c60$0$27378$>, john swilting
> <> wrote:
>
>> I recopied the chaphitre 5

>
> In what book?
>
>> #!/usr/bin/perl -w

>
> use warnings; # preferred these days
>
>>
>> use strict;
>> use diagnostics;
>>
>> my @conf = ('XferMethod',
>> 'rsync',
>> 'XferLogLevel',
>> '1',
>> 'RSyncShare',
>> '___1___',##they is these 2 pattern
>> 'ClientNameAlias',
>> '___2___');##they is pattern
>>
>>
>> print @conf,"\n";
>> my @substitution = @conf;
>> my $motif =qr/___[1-9][0-9]?___/is;
>> my @regexes = ();
>> my @motif = ();

>
> The array @motif is empty.
>
>> foreach $motif ( @motif ) {
>> push @regexes, qr/$motif/;
>> }

>
> You are iterating over the empty array @motif, assigning each value
> therein to the variable $motif. At the end of this loop, since @motif
> has no values, the array @regexes will also be empty.
>
> Perhaps you want, instead of the loop, the following:
>
> push( @regexes, $motif );
>
>>
>> foreach my $elem ( @substitution ) {
>> foreach my $re ( @regexes ) {##the loop however turns
>> well#scalar(@regexes
>> if ( $elem =~ /$re/) {##one do not arrive to this line
>> print "$elem egal $re\nentrer la valeur\n";
>> chop ($elem =<STDIN>);
>> print "nouvelle valeur de",$elem,"\n";
>> }
>> }
>> }
>>

>
> The inner statements of the loop on @regexes will never be executed,
> because @regexes has no values.
>

the book is programmation en perl 3eme edition
with the push (@regexes,$motif)
the substitution is well

how to make to improve my code... I look at closely the precis examples
handbook O reilly
 
Reply With Quote
 
 
 
 
john swilting
Guest
Posts: n/a
 
      08-31-2007
john swilting wrote:

> Jim Gibson wrote:
>
>> In article <46d83c60$0$27378$>, john swilting
>> <> wrote:
>>
>>> I recopied the chaphitre 5

>>
>> In what book?


> the book is programmation en perl 3eme edition
> with the push (@regexes,$motif)
> the substitution is well
>
> how to make to improve my code... I look at closely the precis examples
> handbook O reilly

#!/usr/bin/perl -w

use strict;
use diagnostics;
use warnings;

my @conf = ('XferMethod',
'rsync',
'XferLogLevel',
'1',
'RSyncShare',
'___1___',
'ClientNameAlias',
'___2___');


print @conf,"\n";
my @substitution = @conf;
my $motif =qr/(___[1-9][0-9]?___)/is;
my @regexes = ();
##my @motif = ();
##foreach $motif ( @motif ) {
## push (@regexes,qr/$motif/);
## }
push (@regexes,$motif);
foreach my $elem ( @substitution ) {
foreach my $re ( @regexes ) {
if ( $elem =~ /$re/) {
print "$elem egal $re\nentrer la valeur\n";
chop ($elem =<STDIN>);
print "nouvelle valeur de",$elem,"\n";
}
}
}


how to do improves my code
 
Reply With Quote
 
Klaus
Guest
Posts: n/a
 
      08-31-2007
On Aug 31, 7:15 pm, john swilting <john.swilt...@wanadoo.fr> wrote:
> how to make to improve my code...
>
> #!/usr/bin/perl -w
>
> use strict;
> use diagnostics;


If you can afford, get rid of the "use diagnostics" to improve
execution speed.

> use warnings;
>
> my @conf = ('XferMethod',
> 'rsync',
> 'XferLogLevel',
> '1',
> 'RSyncShare',
> '___1___',
> 'ClientNameAlias',
> '___2___');
>
> print @conf,"\n";
> my @substitution = @conf;
> my $motif =qr/(___[1-9][0-9]?___)/is;
> my @regexes = ();


> ##my @motif = ();
> ##foreach $motif ( @motif ) {
> ## push (@regexes,qr/$motif/);
> ## }


You could remove the commented out code altogether from your program,
it is confusing.

> push (@regexes,$motif);
> foreach my $elem ( @substitution ) {
> foreach my $re ( @regexes ) {
> if ( $elem =~ /$re/) {
> print "$elem egal $re\nentrer la valeur\n";
> chop ($elem =<STDIN>);


You could use chomp instead of chomp.
perldoc -f chomp
This safer version of chop removes any trailing string that
corresponds to the current value of $/

> print "nouvelle valeur de",$elem,"\n";
> }
> }
> }


 
Reply With Quote
 
Tad McClellan
Guest
Posts: n/a
 
      08-31-2007
john swilting <> wrote:


> my $motif =qr/___[1-9][0-9]?___/is;



That is equivalent to:

my $motif =qr/___[1-9][0-9]?___/;

Both of the modifiers are no-ops. They do nothing.

m//i ignores case. Where can your pattern match letters so that
their case can be ignored? Nowhere.

m//s makes dot in your pattern match a newline. Where is the dot in
your pattern that is being modified?

You should not use a modifier unless you know what that modifier does,
and why it is needed in your regex.


--
Tad McClellan
email: perl -le "print scalar reverse qq/moc.noitatibaher\100cmdat/"
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
How make regex that means "contains regex#1 but NOT regex#2" ?? seberino@spawar.navy.mil Python 3 07-01-2008 03:06 PM
using templates as substitutions for #ifdef Chris Goller C++ 4 03-09-2005 12:17 AM
Backslash substitutions Vivien Mallet Python 1 09-29-2004 07:24 PM
Ant problem with property substitutions. RJGraham Java 6 06-28-2004 03:49 AM
Tkinter: spinbox command and percent substitutions Tony Eva Python 1 11-09-2003 02:25 PM



Advertisments