Perl-将输出打印到不同目录中的文件

Perl-将输出打印到不同目录中的文件,perl,file,path,directory,file-io,Perl,File,Path,Directory,File Io,早上好 我很抱歉,如果这已经张贴过-我找不到它。我只需要一点点指向正确的方向,这是我的家庭作业,我觉得差不多完成了。我要做的是从运行脚本的不同文件夹中的文件中获取数据,在Perl中处理数据,然后将输出打印到另一个目录。现在我完成了这两部分,但我失败的是Perl没有找到我想要保存文件的路径。它只是说“不存在同名的文件或目录”,但它确实存在!以下是脚本的一部分: my @files = <$ENV{HOME}/Docs/unprocessed/*.txt>; my $path = "$E

早上好

我很抱歉,如果这已经张贴过-我找不到它。我只需要一点点指向正确的方向,这是我的家庭作业,我觉得差不多完成了。我要做的是从运行脚本的不同文件夹中的文件中获取数据,在Perl中处理数据,然后将输出打印到另一个目录。现在我完成了这两部分,但我失败的是Perl没有找到我想要保存文件的路径。它只是说“不存在同名的文件或目录”,但它确实存在!以下是脚本的一部分:

my @files = <$ENV{HOME}/Docs/unprocessed/*.txt>;
my $path = "$ENV{HOME}/Docs/results";

<looping through @files, processing each file in the unprocessed folder...>

open (OUTFILE, $path . '>$file') or die $!;
print OUTFILE ""; # "" Is really the finished calculations from the loop, not important here.
close FILE;
close OUTFILE;
my@files=;
my$path=“$ENV{HOME}/Docs/results”;
打开(输出文件,$path.'>$file')或死亡$!;
打印输出文件“”;#“”实际上是从循环中完成的计算,在这里并不重要。
关闭文件;
关闭输出口;

我打赌这是愚蠢的…

因为你把“写”标记
和文件名混在一起了。这:

open (OUTFILE, $path . '>$file')
应该是:

open (OUTFILE, ">$path/$file")
您还可能需要从文件名中删除
../Docs/unprocessed/
前缀:

use File::Basename;

open (OUTFILE, ">$path/" . basename($file))

它起作用了!万分感谢Howie!现在,我的boot与一个特定的Perlmonk预约了……三参数open会更好地
open(OUTFILE,“>”,“$path/”。basename($file))
来防止变量中出现奇怪的东西。@robeall除了三参数版本的
open
之外,使用词法文件句柄会更好<代码>打开我的$fh,“>”,“…”或“悲惨地”死去知道如何向basename($file)添加字符串吗?我还想将当前日期和时间添加到文件名中,保存在$date中。附加它:
“$path/”。basename($file)。“-$date”
谢谢您的回答<代码>使用文件::Basename和
open(OUTFILE,“>$path/”。basename($file))
成功了。不需要在标题中添加
solved