On Dec 28, 2007 6:42 AM,  <[EMAIL PROTECTED]> wrote:
> Hi all,
>            I am new user of this group. can you tell how can i accept
> array elements using loop. for example
> for($i=0;$i<5;$i++)
> {
>   $a[$i]=<stdin>;
> }

While this does appear to be valid syntax (except that it is STDIN not
stdin), it is more Perlish to say

for (1 .. 5) {
    push @a, scalar <STDIN>;
}

or better yet, since STDIN is the file* that is read from when you
used just use <>

for (1 .. 5) {
    push @a, scalar <>;
}

and while we are at it we can use the conditional form of the for loop

push @a, scalar <> for 1 .. 5;

We could also say

my @a = map { scalar <> } 1 .. 5;

if we wanted to initialize @a when we declare it.

Of course, all of this is moot if @a already has data in it and you
want to replace the first five items.  In that case you should use
splice:

splice @a, 0, 5, map { scalar <> } 1 .. 5;

* <> has a little bit of magic to it, it will read from STDIN if there
is nothing in @ARGV, but if there are items in @ARGV it will try to
open and read from them instead.  This is often the behavior you
desire (see grep, tr, or any of the other filtering UNIX commands).

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


Reply via email to