help regex and substitutions

help regex and substitutions

am 31.08.2007 18:05:51 von john.swilting

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 =);
print "nouvelle valeur de",$elem,"\n";
}
}
}

Re: help regex and substitutions

am 31.08.2007 18:27:38 von Jim Gibson

In article <46d83c60$0$27378$ba4acef3@news.orange.fr>, 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 =);
> print "nouvelle valeur de",$elem,"\n";
> }
> }
> }
>

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

--
Jim Gibson

Posted Via Usenet.com Premium Usenet Newsgroup Services
----------------------------------------------------------
** SPEED ** RETENTION ** COMPLETION ** ANONYMITY **
----------------------------------------------------------
http://www.usenet.com

Re: help regex and substitutions

am 31.08.2007 19:02:03 von john.swilting

Jim Gibson wrote:

> In article <46d83c60$0$27378$ba4acef3@news.orange.fr>, 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 =);
>> 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

Re: help regex and substitutions

am 31.08.2007 19:15:42 von john.swilting

john swilting wrote:

> Jim Gibson wrote:
>
>> In article <46d83c60$0$27378$ba4acef3@news.orange.fr>, 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 =);
print "nouvelle valeur de",$elem,"\n";
}
}
}


how to do improves my code

Re: help regex and substitutions

am 31.08.2007 20:20:32 von Klaus

On Aug 31, 7:15 pm, john swilting 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 =);

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

Re: help regex and substitutions

am 31.08.2007 23:48:34 von Tad McClellan

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