Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

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.


Comment on Re^2: new to perl, syntax question
Download Code
Re^3: new to perl, syntax question
by Marshall (Prior) 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?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://955057]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (9)
As of 2015-07-07 08:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (87 votes), past polls