perl mktemp和echo

时间:2011-05-15 13:08:23

标签: perl command-line temp

我试图通过命令行在temp文件中添加一些单词 已创建临时文件但未在tempfile中过去的单词

#!/usr/bin/perl -w
system ('clear');
$TMPFILE = "mktemp /tmp/myfile/devid.XXXXXXXXXX";
$echo = "echo /"hello world/" >$TMPFILE";
system ("$TMPFILE");
system ("$echo");

请帮助解决此问题

3 个答案:

答案 0 :(得分:3)

尽可能避免使用perl脚本中的外部命令。

在这种情况下,您可以使用:File::Temp模块,请参阅this

答案 1 :(得分:2)

要捕获mktemp输出的名称,请改为:

chomp($TMPFILE = `mktemp /tmp/myfile/devid.XXXXXXXXXX`);

但是Perl可以在不诉诸shell的情况下完成你正在做的所有事情。

答案 2 :(得分:2)

以下是其他人给你的建议的具体演示:在可能的情况下,直接使用Perl而不是调用system。此外,您应养成在Perl脚本中包含use strictuse warnings的习惯。

use strict;
use warnings;

use File::Temp;
my $ft = File::Temp->new(
    UNLINK   => 0,
    TEMPLATE => '/tmp/myfile/devid.XXXXXXXXXX',
);

print "Writing to temp file: ", $ft->filename, "\n";

print $ft "Hello, world.\n";