Ik wil een stukje in een link vervangen door een dagnummer om uiteindelijk zoiets:
Nou leek mij dat simpel te regelen met:
ik geef dan:
http://www.mijndomein.nl/dir/sub/archives-**.html 70
als parameters mee, en de ** zouden steeds vervangen moeten worden door $i, maar dit gebeurt maar 1 keer.
Weet iemand hoe ik kan bereiken dat $pattern steeds opnieuw geevalueerd wordt?
Ik heb de /e modifier geprobeerd, en er ook eval{} omheen gezet, ik heb de regex in een subroutine gezet, ik heb een extra variabele gebruikt om $i aan toe te wijzen, maar niets hielp.
Uiteindelijk is het met een lelijke omweg:
wel gelukt, maar ondertussen vraag ik me wel af of het gewoon echt niet kan, of dat ik iets over het hoofd zie.
te printen.
Nou leek mij dat simpel te regelen met:
code:
1
2
3
4
5
6
7
| #!/usr/bin/perl
use strict;
my($link,$aantaldagen) = @ARGV;
for (my $i = 1; $i <= $aantaldagen; $i++ ) {
$link =~ s/\*\*/$i/;
print "$i\t$link\n";
} |
ik geef dan:
http://www.mijndomein.nl/dir/sub/archives-**.html 70
als parameters mee, en de ** zouden steeds vervangen moeten worden door $i, maar dit gebeurt maar 1 keer.
Zoekwerk leert dat dit gedrag beinvloed wordt door de /o optie, uit perlrequick:
maar ik wil juist het tegenovergestelde!perl has to re-evaluate $pattern each time through the loop. If $pattern won't be changing, use the //o modifier, to only perform variable substitutions once.
Weet iemand hoe ik kan bereiken dat $pattern steeds opnieuw geevalueerd wordt?
Ik heb de /e modifier geprobeerd, en er ook eval{} omheen gezet, ik heb de regex in een subroutine gezet, ik heb een extra variabele gebruikt om $i aan toe te wijzen, maar niets hielp.
Uiteindelijk is het met een lelijke omweg:
code:
1
2
3
4
| my $link2 = $link; $link2 =~ /(.+)\*\*(.+)/; $link2 = "$1$i$2"; print "$i\t$link2\n"; |
wel gelukt, maar ondertussen vraag ik me wel af of het gewoon echt niet kan, of dat ik iets over het hoofd zie.
Whenever you find that you are on the side of the majority, it is time to reform.