• ベストアンサー

CGI.pmで取得したファイルハンドルを変数にいれるとファイル名のみになる・・・

perlにて、 use CGI; my $q = new CGI; my $ufh = $q->upload('file'); などで$ufhにファイルハンドルを受け取り、 この直後で、アップロードなどを行うと正常に行われるのですが、 別の関数に渡してからアップロードを行うとファイル名がついた0バイトのファイルがアップロードされます。 &test($ufh); test($){ $filename = $_[0]; while(read($filename , $buffer, 1024)){ $file .=$buffer; } my $basename; my $exp; my $files; my $newfile; my @files = split(/\\/, $file_name); ($basename, $exp) = split(/\./, $files[-1]); $newfile = $basename . "." . $exp; open(FILE, "> /tmp/$newfile"); binmode(FILE); print(FILE $files); close(FILE); } ファイルハンドルを変数に格納して持ちまわすことはできないのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

この場合は単にスペルミスだと思われます。 print(FILE $files); これは print(FILE $file); これですね。 これでファイル出力ができると思います。

DynamisH
質問者

お礼

単純ミスでした・・・ 大変失礼しました。 ありがとうございます。

その他の回答 (1)

  • guci-ok
  • ベストアンサー率33% (49/146)
回答No.1

「use strict;」は付けていますか? コンパイルエラーが一杯でてますよ。 D:\>perl -wc test.pl Global symbol "$filename" requires explicit package name at test.pl line 3. Global symbol "$filename" requires explicit package name at test.pl line 4. Global symbol "$buffer" requires explicit package name at test.pl line 4. Global symbol "$file" requires explicit package name at test.pl line 5. Global symbol "$buffer" requires explicit package name at test.pl line 5. Global symbol "$file_name" requires explicit package name at test.pl line 11. test.pl had compilation errors. 余談ですが、括弧は余り付けないほうが見やすいですよ。

DynamisH
質問者

お礼

ありがとうございます。 もう少しチェックするべきでした・・・

関連するQ&A