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根据当前的操作系统来做路径。移植代码时,您不想更改构建路径的方式。

此外,使用lexical文件处理程序是比使用 Bareword (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 回答