UNIX와 Windows에서 같은 방식으로 작동하는 익명 파이프를 사용할 수 있습니다. start
때문에 Windows를 사용한다고 가정합니다.이 시도 :
use strict;
use warnings;
my $appl = 'orange';
my @inputarray = ([0,1,2],[3,4,5],[6,7,8]);
을 우리는 $count
필요하지 않습니다, 당신은 스칼라 문맥, 또는 $#inputarray
를 사용하여 가장 높은 인덱스 번호를 사용하여 배열의 요소 수를 얻을 수 있습니다;
디버그하기가 어렵 기 때문에 start
을 생략했습니다 (실행 후 콘솔 창이 닫힙니다).
use strict;
use warnings;
my ($inp) = <STDIN>;
my ($appl, $inputarray);
eval "$inp";
print "appl = $$appl\n";
: 파이프 (입력 스트림을) 읽는 아이, 지금
use Data::Dumper;
local $Data::Dumper::Purity = 1;
local $Data::Dumper::Indent = 0;
my $dat = Data::Dumper->new([\$appl,\@inputarray],
[qw($appl $inputarray)]);
print $pipe $dat->Dump();
close ($pipe);
: 우리가 eval
문을 추가하고 공백 발생을 줄일 수있는 데이터 : 덤퍼 사용
my $cmd = 'perl child.pl';
open(my $pipe, '|-', $cmd) or
die "Unable to execte $cmd; $!";
eval
의 사용은 보통 눈살을 찌푸 리니 보안 구멍이 생길 수 있으므로 조심해서 사용하십시오. 나는 그것이 여기 정당하다고 생각한다.
귀하의 루프는 태드 복잡하고, C의 냄새가이 오히려 더 Perlish 있습니다
for my $ref (@$inputarray) {
for my $ele (@$ref) {
print "$ele "
}
print "\n"
}
YAML이는 eval
을 필요로하지 않기 때문에 안전하지만 설치해야합니다.
Welcome to Stackoverflow. 질문에 관련 코드가 포함 된 스 니펫을 추가하십시오. – mzedeler
'Data :: Dumper' 또는'Storable' –
... 또는 YAML로 직렬화하십시오. 그리고 CPAN에는 다른 많은 옵션들이있을 것입니다. –