0

我正在尝试通过命令行临时文件创建在临时文件中放入一些单词,但在临时文件中没有过去的单词

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

请帮助解决这个问题

4

3 回答 3

4

要捕获 mktemp 输出的名称,请改为执行以下操作:

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

但是 Perl 可以在不借助 shell 的情况下完成您正在做的所有事情。

于 2011-05-15T13:20:04.160 回答
3

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

你可以使用:File::Temp模块在这种情况下,看到这个

于 2011-05-15T13:19:23.483 回答
3

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

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";
于 2011-05-15T13:43:19.737 回答