使用下面的perl代码,我尝试在一个随机生成的文件中输出一些名称。但是文件是用如下奇怪的字符创建的:
“snp-list-bo.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;
}发布于 2017-10-10 10:12:40
mktemp在其输出中返回一个行提要字符,首先需要chop()或chomp()。
与其使用外部mktemp程序,不如使用档案::Temp吧?
发布于 2017-10-10 11:11:00
由于几个原因,不必要地使用外部程序是个坏主意。
这是最后一个烧死你的地方。但其他的也同样适用。
多年来,Perl的标准库中包含了档案::Temp模块,该模块为您创建临时文件,而不需要使用外部程序。
use File::Temp qw/ tempfile /;
# It even opens it and gives you the filehandle.
($fh, $filename) = tempfile();https://stackoverflow.com/questions/46664077
复制相似问题