Pode haver outras maneiras de fazer isso (não sou especialista em csh / tcsh - não gostei do csh quando tive que usá-lo no início dos anos 90 e o evitei o máximo possível desde então), mas a única maneira Eu encontrei para fazer o que você quer no tcsh é com set nonomatch
ou set noglob
. Por exemplo:
perlscript.pl:
#!/usr/bin/perl
@CMDLineArgs = ('-stuff', '-more_stuff', '-even_more', '*stuff', '-last_stuff');
system('./script.tcsh', @CMDLineArgs);
alternativamente, se você não quiser digitar todas as aspas simples e vírgulas, use qw()
:
@CMDLineArgs = qw(-stuff -more_stuff -even_more *stuff -last_stuff);
script.tcsh:
#!/bin/tcsh
set nonomatch
set flags=($argv[*])
foreach f ($flags)
echo $f
end
e a saída é:
$ ./perlscript.pl
-stuff
-more_stuff
-even_more
*stuff
-last_stuff
Observe como isso mantém cada argumento como um elemento separado em $flags
, em vez de concatená-los em uma única string.