Ce simple script Perl traduit des articles d'une base de données en XML, mais cette section me cause des problèmes. La fonction makeUrl
est appelée pour chaque article, mais doit s'assurer que les URL en double ne sont pas créées.La fonction de tableau perl simple ne fonctionne pas
my @headlines =();
my $hlCount = 1;
.
.
.
sub makeUrl {
my $headline;
open(URLSOUT, '>>/var/mtkoan/harris/urls');
$url = $_[0];
print URLSOUT "Before: $url\n";
$url =~ s/\x{90}//g;
$url =~ s/\s+$//g;
$url =~ s/^\s+//g;
$url =~ s/\s/_/g;
$url =~ s/\W//g;
push @headlines, $url;
foreach $headline (@headlines) {
if($headline eq $url) {
$url .= "_$hlCount";
$hlCount++;
}
}
print URLSOUT "After: $url\n\n";
print URLSOUT "Headline Array Dump:\n";
print URLSOUT "@headlines\n";
close URLSOUT;
}
Lorsque le tableau est imprimé, seule la dernière valeur est affichée. Push n'est pas ajouté à la fin du tableau, je ne peux pas le comprendre!
voici le script complet: http://pastebin.com/6SXe5ZSd – mtkoan
Oof, Switch. Cette chose peut causer des problèmes désagréables. Envisagez de réécrire en utilisant donné/quand (si vous êtes sur 5.10 ou plus récent) ou si/sinon autrement. Switch est juste joli; cela ne va pas vraiment accélérer le programme. –
Je ne vois pas pourquoi ça ne marche pas, mais il serait plus logique d'utiliser un hachage au lieu d'un tableau. Ensuite, vous n'auriez pas besoin de faire une boucle dans le tableau pour voir s'il y a un dupe; ce serait juste une simple recherche de hash. – cjm