chen li wrote:
> 
> --- "John W. Krahn" <[EMAIL PROTECTED]> wrote:
>>
>>$ perl -le'
>>my $string = q[  a  b  c  d  ];
>>print join "\t", map "<$_>", split q[\s+],
>>qq[$string], q[4];
>>print join "\t", map "<$_>", split  /\s+/,   
>>$string,    4;
>>'
>><>      <a>     <b>     <c  d  >
>><>      <a>     <b>     <c  d  >
>>
>>$ perl -le'
>>my $w = 3;
>>my $x = 7;
>>my $y = 2;
>>my $z = 6;
>>
>>print join "\t", map "<$_>", split  $w * $x - $y *
>>$z,  q[one] . ( $w + $z ) .
>>q[two] . ( $x + $y ) . q[three];
>>'
>><one>   <two>   <three>
> 
>  split /PATTERN/,EXPR,LIMIT
>  split /PATTERN/,EXPR
>  split /PATTERN/
>  split
> 
> 1. I check the perldoc -f split but I am not quite
> sure what EXPR really means.

It basically means any valid perl code.

> Does it refer to a string,

Yes.

> or a scalar variable contaning a string,

Yes.

> or an array?

No.

> From what I learn from camel book I don't find
> an example that shows "split" can work on an array.

It can't.  split forces scalar context on its arguments so an array would be
seen by split as a number (the number of elements in the array.)

> But it works fine for my array transition. Am I
> missing something?

One example uses map to split each individual array element and the other
example converts the array to a string (scalar) first.

> 2. In this line $ perl -le what does -le mean?

perldoc perlrun
[snip]
       -e commandline
            may be used to enter one line of program.  If -e is given, Perl
            will not look for a filename in the argument list.  Multiple -e
            commands may be given to build up a multi-line script.  Make sure
            to use semicolons where you would in a normal program.
[snip]
       -l[octnum]
            enables automatic line-ending processing.  It has two separate
            effects.  First, it automatically chomps $/ (the input record
            separator) when used with -n or -p.  Second, it assigns "$\" (the
            output record separator) to have the value of octnum so that any
            print statements will have that separator added back on.  If
            octnum is omitted, sets "$\" to the current value of $/.  For
            instance, to trim lines to 80 columns:

                perl -lpe 'substr($_, 80) = ""'

            Note that the assignment "$\ = $/" is done when the switch is
            processed, so the input record separator can be different than the
            output record separator if the -l switch is followed by a -0
            switch:

                gnufind / -print0 | perl -ln0e 'print "found $_" if -p'

            This sets "$\" to newline and then sets $/ to the null character.



John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to