2011-05-15 52 views
0

我試圖把一些詞在臨時文件通過命令行 臨時文件科瑞但字不過去在臨時文件perl的mktemp的和回聲

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

請幫助使用外部命令這

回答

2

捕獲由mktemp的輸出的名稱,而是執行此操作:

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

但Perl可以做所有你正在做沒有的事訴諸殼。

3

避免Perl來解決腳本儘可能多。

你可以使用:File::Temp模塊在這種情況下,看到this

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"; 
+0

+1代碼 – snoofkin 2011-05-15 13:45:21

+0

您導入tempfile但不使用它 – ysth 2011-05-17 19:12:34