Horst: File::Copy kopiert nicht

Hallo

iregendwie klaptt das mit dem kopieren von Dateien nicht.. (Win2000 und Cygwin)

use File::Copy;

open(ART,'art.txt');
@art = <ART>;
foreach $artikel (@art){
 chomp($artikel);
 $file1 = "F:/Site Images/Products/".$artikel."b.jpg";
 $file2 = "F:/Produkt Bilder/".$artikel."b.jpg";
 copy($file1,$file2);
}

Mache ich irgendwas falsch???
Das Programm macht nichts... es gibt keine Fehlermeldung aus und kopiert auch nix
Der Rückgabewert von Copy ist also Null. Innerhalb des Verzeichnisses
klappts.

Viele Grüße
  Horst

  1. Hallo

    iregendwie klaptt das mit dem kopieren von Dateien nicht.. (Win2000 und Cygwin)

    use File::Copy;

    use strict;

    open(ART,'art.txt');

    open(ART,'art.txt') || die "Kann art.txt nicht öffnen, weil $!";

    @art = <ART>;

    unnötig!

    foreach $artikel (@art){

    while(<ART>)

    chomp($artikel);
     $file1 = "F:/Site Images/Products/".$artikel."b.jpg";
     $file2 = "F:/Produkt Bilder/".$artikel."b.jpg";
     copy($file1,$file2);

    Bist du sicher, das es die Verzeichnisse gibt?

    }

    Mache ich irgendwas falsch???
    Das Programm macht nichts... es gibt keine Fehlermeldung aus und kopiert auch nix
    Der Rückgabewert von Copy ist also Null. Innerhalb des Verzeichnisses
    klappts.

    Aus der Doku von File::Copy:
    "All functions return 1 on success, 0 on failure. $! will be set if an error was encountered."

    Dann geb dir mal $! aus, vielleicht hilft dir das ja weiter.

    Struppi.

    1. Hi Struppi,

      vielen Dank für die Verbesserungsvorschläge...

      leider haben die nicht viel gebracht... es liegt wohl am Cygwin.

      Habe jetzt ActivePerl installiert, es klappt

      Gruss
       Horst

      1. Moin Moin !

        es liegt wohl am Cygwin.

        Genau. Cygwin ist eine Unix-Emulation, die kennt keine Laufwerksbuchstaben!

        Dein Script hat immer nach dem Unterverzeichnis(!) "F:" im aktuellen Verzeichnis (also "./F:/") gesucht. Und das gibt es wahrscheinlich nicht. Lies die Cygwin-Doku, wie Du auf DOS-Laufwerke kommst (/cygdrive/f/ war es glaube ich), oder bleib bei ActivePerl.

        Alexander

        --
        Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
        Mein "Lieblings-Forums-Bug": http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
        1. Hi Alex,

          daran lag es nicht... Cygwin (oder die Perl-Version mit Cygwin zusammen)
          hatte anscheinend Probleme mit dem zusammenhängen von zwei Variablen.
          Bei der Ausgabe kam nur Quatsch raus, irgendwie hat er die übereinander geschrieben... wenn ich die gleichen Angaben gemacht haben,
          ohne $_ und anstattdessen einen existierenden Dateinamen genommen habe
          gings...

          Gruss
          Horst

          1. Moin Moin !

            Hi Alex,

            daran lag es nicht... Cygwin (oder die Perl-Version mit Cygwin zusammen)
            hatte anscheinend Probleme mit dem zusammenhängen von zwei Variablen.

            *DAS* glaube ich nun wirklich nicht. Soweit ich weiß, benutzen Cygwin und ActiveState die selbe Code-Basis. ActiveState baut ein paar Patches ein (hauptsächlich das Pseudo-Modul Win32::), die Cygwin naturgemäß nicht hat. Aber das war es auch mit den Unterschieden.

            Ich glaube, Du hast irgendwelchen merkwürdigen Code verzapft, der Seiteneffekte erzeugt. Die treten nun zufällig unter Cygwin auf und unter ActivePerl zufällig nicht.

            Bau mal das Flag -w in Dein Script ein ("#!/usr/bin/perl -w" in der ersten Zeile) und das Pragma strict ("use strict;" möglichst früh, am besten in der zweiten Zeile), wie schon Struppi vorgeschlagen hat.

            Alexander

            --
            Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
            Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
            Mein "Lieblings-Forums-Bug": http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
            1. Hi

              na wenn du meinst...

              Ich kann es jedenfall nicht nachvollziehen...

              Ist aber auch egal, es läuft ja

              Gruss
              vom Horst

              1. Hi horst,

                Ich kann es jedenfall nicht nachvollziehen...
                Ist aber auch egal, es läuft ja

                bis zum nächsten "Seiteneffekt" ...

                Viele Grüße
                      Michael

                --
                T'Pol: I apologize if I acted inappropriately.
                V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.