Jonathan Scott Duff wrote: > > I'm fiddling around with parrot and created a getopt macro (inspired > by the arg processing in Leon Brocard's uniq.pasm :-). This is my > first attempt at something semi-useful in parrot. > > Anyway, here it is and looking for comments, [snip] > # Note: Both P15 and I15 are clobbered by this routine. P15 will be a > # PerlHash containing the options and their values and I15 will > # contain the index of the first non-option arguement on the > # comamnd line. > > .macro getopt (str)
Wouldn't it be more flexible to write it as: .macro getopt(str, args_in, argout_index, argout_hash) , so that the user can fully specify where args get read from, and what gets clobbered? > save S0 # Current command line arg > save S1 # option char > save S2 # scratch string AFAIK, a single "pushs" op is faster than three "save S<N>" ops. -- $a=24;split//,240513;s/\B/ => /for@@=qw(ac ab bc ba cb ca );{push(@b,$a),($a-=6)^=1 for 2..$a/6x--$|;print "[EMAIL PROTECTED] ]\n";((6<=($a-=6))?$a+=$_[$a%6]-$a%6:($a=pop @b))&&redo;}