use Mosche;
hoffe mal ihr könnt mir helfen ich habe zuerst einmal versuch ein Script zu basteln das mir lokal in einem Verzeichnis einfach die Dateiendung unbenennt. Sowei so gut das hab ich auch geschafft, nur leider geht das ganze nicht wenn ich zu einem FTP connecte und da dann Datein unbenennen will.
my @Eintraege = readdir(DIR);
my $NeuerEintrag;
foreach $Eintrag (@Eintraege) {
$Eintrag =~ /(.+).$now/;
Wenn ich das richtig verstanden habe, sollen nur die Dateien beachtet werden, die die Endung $now haben. Dann solltest du die Einträge überspringen, die diese Endung nicht haben (weil bei denen oben stehende Regex nicht zutrifft. Also:
next unless (($Name) = $Eintrag =~ /(.+).$now$/);
Ich hoffe das stimmt so.
$NeuerEintrag = $Name.".$after";
$ftp->rename($Eintrag,$NeuerEintrag)|| "Konnte die Dateien nicht unbenennen. ($!)";
Sind alle Dateien, die du auf dem FTP-Server hast, auch lokal vorhanden. Sonst vergleichst du zwei unterschiedliche Datenbestände - entweder sind lokal Daten vorhanden, die nicht auf dem FTP - Server sind (was zu einer Fehlermeldung bei FTP-Rename führen wird) oder auf dem FTP-Server sind Dateien, die du lokal nicht hast (was dazu führen würde, das die Dateien auf dem Server nicht umbenannt werden). Vielleicht wäre es einfacher, den Array mit $ftp->dir zu füllen, was diesen Effekt verhindern würde.
Wenn das nicht funktioniert, solltest du den Fehler noch einmal ausführlicher erläutern.
use Tschoe qw(Matti);