Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

Re^2: new to perl, syntax question

by bimleshsharma (Beadle)
on Feb 20, 2012 at 12:10 UTC ( #955057=note: print w/replies, xml ) Need Help??

in reply to Re: new to perl, syntax question
in thread new to perl, syntax question

suppose you have @a= qw(1 2 3 4);
you are writting print "\n @a"; this will print 1 2 3 4.
if you are trying to write like...
$p= @a, then it will give you count of array i.e. 4
so it does not mean that if we write @a as index inside array would give the value of 4th index of array. Basically if we write code..
$b[@a] with return nothing because bare @a return complete set of value which is not a valid index and that is passing as index in @b so of course will return blank.

Replies are listed 'Best First'.
Re^3: new to perl, syntax question
by Marshall (Abbot) on Feb 20, 2012 at 12:52 UTC
    Perl syntax can be tricky. Does this help? Or just further confuse?

    Update: I guess it confused one Monk, because I got a down vote.
    I am genuinely trying to be helpful here.
    When you write: $y[@x], you are accessing a single element of @y with the index of the scalar value of @x.

    Note: using $a and $b or @a or @b is in general not a good idea as the $a and $b variables have special meaning to Perl and are used in sort. Better is to use: x,y,z.

    However: "@a return complete set of value" this is not correct. What @a would mean is context specific.

    #!/usr/bin/perl -w use strict; use Data::Dumper; my @x= qw(1 2 3 4); my @y= qw(7 8 9 10 11 12 13 14); my $num = $y[@x]; # @x evaluates here to the number "4"!!! # the number of elements in @x # As said before this is a VERY unusual # formulation!!! # It looks weird because it is weird. # As mentioned above more normal would be # $y[@x-1] or $y[$#x] # I'm not saying that $y[@x] cannot have a defined, # value but just that it is "strange" absent other # context and would be worthy of a comment in the # code. print "The number in y is: $num\n"; #the 5th thing in @y!! WHOA! #print $x[@y]; # ERROR: Use of uninitialized value in print # this is because: $x[8] is undefined! # However consider this: # here [@x] means something completely different push @y, [@x]; # this means: assign new memory, # copy @x into that new memory , # push a reference to that memory # onto @y print Dumper \@y; __END__ The number in y is: 11 ### the 5th thing in @y $VAR1 = [ '7', '8', '9', '10', '11', '12', '13', '14', [ '1', '2', '3', '4' ] ];

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://955057]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (7)
As of 2018-03-24 00:38 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (297 votes). Check out past polls.