«echo» html-контент в файл на perl

Псевдонимы доступны только в сеансе, в котором они определены (поскольку они предназначены для интерактивного использования), поэтому Octave их не увидит.

Вместо этого я бы рекомендовал указать полный путь к ltspice в вызове system().

0
06.04.2017, 15:01
2 ответа

Я нашел его. Извини, мне нравится грязный перл ....

`echo \'@_\' >/tmp/curl`;

Спасибо, что напомнили мне, Ракеш Шарма. Я меняю код на этот.

push @_, 'that "is"you\'ok.'; 
for(@_){s/'/"/g;}; `echo \'@_\' >/tmp/curl`;
0
28.01.2020, 02:16

О боже, нет. То, что вы делаете с обратными кавычками, - это создание оболочки только для того, чтобы напечатать что-то в файл. Как вы заметили, специальные символы вызывают проблемы и позволяют вводить команды . Теоретически вы можете избежать всего, что оболочка считает особым, но это раздражает.

Просто используйте соответствующие функции обработки файлов и создайте функцию, содержащую все шаги:

sub dumptofile($@) {
    my $file = shift;
    if (open F, ">", $file) {
        print F @_;
        close F; 
    } else {
        warn "Can't open $file: $!"
    }
}

dumptofile("/tmp/curl", "some output\n");

Теперь, если вы не хотите вводить все это, вы можете сократить это до чего-то более уродливого, игнорируя проверку ошибок и все такое ( как в моей первой версии). Или сохраните полную версию в модуле и поместите ее куда-нибудь в путь включения вашего Perl (см. perl -I ).

# Dumptofile.pm
package Dumptofile;
use strict;
use warnings;
use Exporter qw/import/;
our @EXPORT = qw/dumptofile/;

sub dumptofile($@) {
    my $file = shift;
    if (open my $fh, ">", $file) {
        print $fh @_;
        close $fh; 
    } else {
        warn "Can't open $file: $!"
    }
}
1;

использовать:

perl -MDumptofile -e 'dumptofile("out.txt", "blahblah");
5
28.01.2020, 02:16

Теги

Похожие вопросы