我想从tcl调用perl脚本,在该脚本中我想将tcl数组发送到perl命令行参数以及如何在perl脚本中使用它
谢谢
答案 0 :(得分:1)
给出Tcl数组
array set ary {foo 11 bar 12 baz 13}
您可以像这样将其传递给perl:
exec perl script.pl {*}[array get ary]
在perl中,您可以说
my %hash = @ARGV;
演示(从shell提示):
$ echo '
array set ary {foo "11 22" bar 12 baz 13}
puts [exec perl -MData::Dump=dd -e {my %hash = @ARGV; dd \%hash} {*}[array get ary]]
' | tclsh
{ bar => 12, baz => 13, foo => "11 22" }
答案 1 :(得分:1)
tcl:
set ax(0) 5
set ax(1) 6
set values ""
set names [array names ax]
foreach xc $names {
lappend values $ax($xc)
}
exec perl path_to_perl_script.pl $names $values
perl:
my @ar1 = split(" ", $ARGV[0]);
my @ar2 = split(" ", $ARGV[1]);
my %hash = ();
my $length = @ar1;
for (my $i=0; $i < $length; $i++) {
$hash{$ar1[$i]} = $ar2[$i];
}
foreach my $x (keys %hash) {
print " $hash{$x}\n";
}
输出: 6 5