Ponieważ w przeciwieństwie do MSW w Linuksie długość wiersza poleceń jest absurdalnie duża zapomniałem, że jednak jest skończona:
system ("perl", "clickshop-delete.pl", "-items", join (',', @AllItems))
Program clickshop-delete.pl
nie jest wykonywany. Żeby ustalić czemu dodaję:
system ("perl", "clickshop-delete.pl", "-items", join (',', @AllItems)) \
== 0 or warn "system failed: $? [$!]\n";
Teraz wiadomo czemu nie działa:
system failed: -1 [Lista argumentów za długa]
Poniższe ustala jak długi może być wiersz poleceń (Debian Lenny na Sheevaplug/ARM):
tomek@neptune:~$ getconf ARG_MAX
131072
Prosty sposób na zmodyfikowanie skryptu z wykorzystaniem splice
:
my $max2process=6000; # każdy element @AllItems ma 12 znaków, więc 6000 jest OK
while ( my @items2process = splice @AllItems, 0, $max2process ) {
system ("perl", "clickshop-delete.pl", "-items", join (',', @items2process)) == \
0 or warn "system failed: $? [$!]\n";
}
Powinno działać.
Brak komentarzy:
Prześlij komentarz