in reply to sending data thru a sub routine

Just a minor extension of choroba's observations (and mentioning, not just BTW, that the quoting here is for the windows box which was readily at hand):

C:\>perl -E "sub doit {for my $passed(@_) { say 'passed is: '. $passed +;}}my @input=@ARGV; for my $input (@input) {say $input;} doit(@input) +;" "one" "two" "three" one two three passed is: one passed is: two passed is: three C:\>

Alternately, you could use shift inside the loop in the sub. And, nota bene, that if your CLI arguements are enclosed in a single set of (appropriate) quotes, @ARGV will have them all as a single element, in which case, you need to (for one example) split @ARGV and push its arguments into whatever array you're going to use to pass to the sub.

C:\>perl -E "sub doit {for my $passed(@_) { say 'passed is: '. $passed +;}} my @input = @ARGV; for my $input (@input) {say $input;} doit(@inp +ut);" "one two three" # NOTE QUOTING VARIANCE! one two three passed is: one two three C:\>


Quis custodiet ipsos custodes. Juvenal, Satires

-->

Replies are listed 'Best First'.
Re^2: sending data thru a sub routine
by AnomalousMonk (Archbishop) on May 11, 2014 at 17:28 UTC
    ... all as a single element, in which case, you need to (for one example) split @ARGV and push its arguments ...

    This seems needlessly confusing advice to offer a novice Perler. Literally calling split on  @ARGV e.g.:
        my @array = split @ARGV;
    is likely to produce (unpleasantly) surprising results. Can you be more clear?

      Good point: clarification herewith:

      Some processing is required; it's definitely not a matter of simply splitting @ARGV, because split expects to work on a string, not an array.

      C:\>perl -E "my ($input) = @ARGV; my @input = split / /, $input; for $ +_(@input) {say $_;}" "trez zwei uno" trez zwei uno

      parenthesize the $input to stringify the content of @ARGV rather than count its (single here) element(s).

      Quibble: AnomalousMonk could improve on this 'clarification' and probably would have done it better the first time.


      Come, let us reason together: Spirit of the Monastery

      Quis custodiet ipsos custodes. Juvenal, Satires

Re^2: sending data thru a sub routine
by james28909 (Deacon) on May 12, 2014 at 01:47 UTC
    i will def keep this in mind, could come in handy :P