#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. вы импортируете временный файл, но не используете его