Home  |  Linux  | Mysql  | PHP  | XML
From:Joshua Juran Date:Sat Jun 30 00:14:37 2007
Subject:Re: [MacPerl] passing arguments: AppleScript to MacPerl
On Jun 28, 2007, at 6:36 PM, Louis Pouzin wrote:

> Calling a macperl script (dog) from AS, with arguments a, b c,  
> would read:
> 	tell perl to do script {dog, a, b, c}
>
> Assuming that a, b, c are strings, they are copied to @ARGV in dog.
>
> The problem I have is passing a list of arguments, e.g.
> 	set names to selection -- nb of selected objects not predictable
> 	tell perl to do script {dog, names} -- names conversion fails

Right, AppleScript doesn't have interpolating lists like Perl does.

> Then I can converts names to a list of strings:
> 	set snames to {}
> 	repeat with nam in names
> 		set snames to snames & (nam as text)
> 	end repeat
> 	tell perl to do script {dog, snames} -- dog is called, @ARGV is empty

'&' is a string concatentation operator.  I think you mean "copy nam  
to end of snames".  If instead you wrote 'set snames to ""', you'd  
tell perl to do script { dog, "foo bar baz" } rather than { dog,  
"foo", "bar", "baz" }.

> dog could be:
> 	$\ = "\n"; # print with EOL
> 	print "nb args: ", scalar @ARGV;
> 	$" = "\n"; # separator
> 	print "@ARGV";
>
> Could anyone suggest a way around ?

set names to {...}
set argv to names
copy dog to beginning of argv
tell perl to do script argv

(The double-set is there for clarity and can be elided.)

These days I don't use MacPerl anymore -- I have my own port of perl  
to a Unix-like environment that runs on classic Mac OS.

Josh


Navigate in group perl.macperl at sever nntp.perl.org
Previous Next




  
© No Copyright
You are free to use Anything
Site Maintained by PHP Developer
Powered By PHP Consultants