0
這個簡單的Perl腳本正在將故事從數據庫轉換爲XML,但是這一節給我提出了一些問題。每個故事都會調用功能makeUrl
,但需要確保不會創建重複的URL。簡單的perl數組函數不起作用
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;
}
當打印數組時,只顯示最後一個值。推不是追加到數組的末尾,我無法弄清楚!
這裏是完整的腳本:http://pastebin.com/6SXe5ZSd – mtkoan 2010-06-07 17:12:16
OOF,開關。那件事可能會引起討厭的問題。考慮重寫使用給定/何時(如果你是5.10或更新)或否則/如果/別人。開關看起來很漂亮;它不會真的讓程序更快。 – 2010-06-07 17:16:30
我不明白爲什麼它不起作用,但使用散列代替數組會更有意義。那麼你就不需要遍歷數組來看看是否有一個愚蠢的行爲;它只是一個簡單的哈希查找。 – cjm 2010-06-07 17:17:53