Patrick Andrieu: Fehler beim Einsatz von Net::Ftp::File - Perl Package Manager

Beitrag lesen

Hallo alle!

Zwei Fragen, ein Thread!

1. Net::Ftp::File

Ziel ist, eine Datei auf dem Webserver hochzuladen und anschließend
   deren Rechte zu ändern. Datei bekommt nach dem Hochladen ja automatisch
   644, ich möchte aber beispielsweise 600 haben, halte mich an die Modul-Beschreibung (#$ftp->chmod):

  
   C:\>perl -w  
   use strict;  
   use Net::FTP::File;  
  
   my $ftp = Net::FTP->new("ftp.atomic-eggs.com", Debug => 0)  
     or die "Cannot connect to some.host.name: $@";  
  
   $ftp->login("myusername",'myPaSSwoRd')  
     or die "Cannot login ", $ftp->message;  
   $ftp->cwd("justanotherdir") or die "Cannot change working directory ", $ftp->message;  
   $ftp->put("localfile.txt", "TESTNETFTP.txt") or die $!;        # Datei bekommt automatisch 644  
   $ftp->chmod(600,"TESTNETFTP.txt") or die $ftp->message;

Ich erhalte die Meldung:

Unknown command 'SITE SITE CHMOD'

Kann das jemand bestätigen? Ist es ein Fehler in meiner Handhabung des Moduls oder im Modul selbst?

Gelöst habe ich es wie weiter unten, nachdem ich mir die entsprechenden Funktionen
   in Net::Ftp::File _und_ im »Muttermodul« Net::FTP angeschaut habe. In Net::FTP::File
   steht:

  
   sub Net::FTP::chmod {  
      my $ftp = shift;  
      if($ftp->supported('SITE CHMOD')) {  
         my $chmod = $ftp->site('CHMOD',@_);  
         return 1 if $chmod == 2;  
         return 0 if $chmod == 5;  
         return -1;  
      }  
      return undef;  
   }

Und die sub site in Net::FTP sieht so aus:

  
  sub site {  
     my $ftp = shift;  
  
     $ftp->command("SITE", @_);  
     $ftp->response();  
   }

Irgendwie wundert mich nicht, dass da zweimal SITE kommt, oder? - auch wenn ich nicht
   ganz durchblicke ;).... so habe ich mir aber geholfen:

  
   C:\>perl -w  
   use strict;  
   use Net::FTP;  
  
   my $ftp = Net::FTP->new("ftp.atomic-eggs.com", Debug => 0)  
      or die "Cannot connect to some.host.name: $@";  
  
   $ftp->login("myusername",'myPaSSwoRd')  
     or die "Cannot login ", $ftp->message;  
   $ftp->cwd("justanotherdir") or die "Cannot change working directory ", $ftp->message;  
   $ftp->put("localfile.txt", "TESTNETFTP.txt") or die $!;        # Datei bekommt automatisch 644  
   my $dateiname = "TESTNETFTP.txt";  
   $ftp->command("SITE CHMOD", 600,$dateiname) or die $ftp->message;

Übrigens gibt es sowohl in /perl/lib ($VERSION = "2.75";) als auch in /perl/site/lib
   ($VERSION = '2.77';) ein Modul FTP.pm. Bei use Net::FTP; wird 2.75 geladen (geprüft mit
   der Ausgabe von print $Net::FTP::VERSION;). Warum gibt es die Module oft zwei Mal, und
   warum wird nicht immer die neueste Version geladen?

2. PPM

Wurde der Perl Package Manager erneuert? Ich bat gerade jemand, Image::Size zu installieren,
   sagte, er soll in der Konsole »ppm« eintippen und dann, wenn der ppm-Prompt kommt »install
   Image-Size«, doch poppt bei dem gleich nach der ppm-Eingabe ein Windows-Fenster auf? Was hat
   es in sich?

Viele Grüße aus Frankfurt/Main,
Patrick

--

_ - jenseits vom delirium - _
[link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
Nichts ist unmöglich? Doch!
Heute schon gegökt?