Perl Mktemp и эхо - PullRequest
       7

Perl Mktemp и эхо

0 голосов
/ 15 мая 2011

я пытаюсь вставить слово в временный файл через командную строку временный файл создан, но слово не осталось в временном файле

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

Пожалуйста, помогите решить эту проблему

Ответы [ 3 ]

3 голосов
/ 15 мая 2011

Старайтесь не использовать внешние команды из сценария perl в максимально возможной степени.

Вы можете использовать: File::Temp модуль в этом случае, см. this

2 голосов
/ 15 мая 2011

Вот конкретная демонстрация совета, который дали вам другие: по возможности, используйте 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";
2 голосов
/ 15 мая 2011

Чтобы захватить вывод имени с помощью mktemp, сделайте это вместо:

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

Но Perl может делать все, что вы делаете, не прибегая к оболочке.

...