使用下面的perl代码,我尝试在随机生成的文件中输出一些名称。但是这些文件是用奇怪的字符创建的:
" SNP一览boo.dwjEUq5Wu ^ J.txt"
而且,显然当我的代码查找这些文件时,它说不是这样的文件。此外,当我尝试使用" vi"打开文件时,它们会像这样打开
vi 'temporary-files/snp-list-boo.dwjEUq5Wu
.txt'
即。使用"新线"在文件名中。有人请帮助我理解并解决这个奇怪的问题。非常感谢!
代码:
my $tfile = `mktemp boo.XXXXXXXXX`;
my $fh = "";
foreach my $keys (keys %POS_HASH){
open ($fh, '>>', "temporary-files/snp-list-$tfile.txt");
print $fh "$keys $POS_HASH{$keys}\n";
close $fh;
}
答案 0 :(得分:6)
mktemp在其输出中返回换行符,您需要先切断()或chomp()。
不是使用外部mktemp
计划,为什么不选择使用File::Temp?
答案 1 :(得分:4)
出于某些原因,不必要地使用外部程序是一个坏主意。
这是最后一个在这里烧你的人。但其他人仍然适用。
多年来,Perl的标准库包含File::Temp模块,可以为您创建临时文件,而无需使用外部程序。
use File::Temp qw/ tempfile /;
# It even opens it and gives you the filehandle.
($fh, $filename) = tempfile();