1

作成しているファイルを、perlスクリプトで作成したディレクトリに出力したいと思います。

ディレクトリを作成できます

use File::Path;

$dir = "foo/";
mkpath($dir);

と私のファイル

$FILE = "output.txt";
unless(open $filehandle, ">", $FILE){
  die "\nUnable to create $FILE:\n$!";
}
printf $filehandle "writing stuff to my file\n";
printf $filehandle "and some more stuff\n";
close($filehandle);

スクリプトの前半で作成したディレクトリに出力されるファイルを除いて、すべて正常に動作します。

どんな助けでもいただければ幸いです。

4

3 に答える 3

2

chdir を使用してディレクトリを変更するか、ディレクトリをファイル名の先頭に追加します。

chdir($dir) or die "Failed to cd to $dir: $!";
# or
$FILE = "$dir/output.txt";

ただし、両方を行わないでください。

于 2012-09-27T16:09:01.910 に答える
2
use File::Spec::Functions;
my $dir = "/somedir";
my $FILE = "output.txt";

my $path = catfile($dir, $FILE)
my $filehandle

unless(open $filehandle, '>',  $path){
  die "\nUnable to create $FILE\n";
}
close($filehandle)

他と大きな違いはありませんがcatfile、現在のOSに合わせたパスを作るために使えます。コードを移植するときにパスを作成する方法を変更したくない..

また、lexicalベアワード (FILE) を使用するよりも、ファイルハンドラーを使用する方が適切なオプションです。

于 2012-09-27T16:36:31.893 に答える
1

このコードは、あなたが求めていることを行います:

$FILE = "$dir/output.txt";
unless(open $filehandle, ">", $FILE){
  die "\nUnable to create $FILE:\n$!";
}
printf $filehandle "writing stuff to my file\n";
printf $filehandle "and some more stuff\n";
close($filehandle);

ファイルを書き込むパスを指定する必要があります。現在の作業ディレクトリから始まる絶対パスまたは相対パスを使用できます。

于 2012-09-27T16:12:46.887 に答える