perl mktemp и echo

#perl #command-line #temp

#perl #командная строка #temp

Вопрос:

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

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

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

Ответ №1:

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

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

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

Ответ №2:

По возможности избегайте использования внешних команд из perl script.

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

Ответ №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";
  

Комментарии:

1. вы импортируете временный файл, но не используете его