Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re^8: Perl vs C

by JavaFan (Canon)
on Mar 16, 2009 at 14:23 UTC ( [id://750904]=note: print w/replies, xml ) Need Help??


in reply to Re^7: Perl vs C
in thread Perl vs C

Now you're modifying an array, swapping one value (a list) for another (another list). Calling the array @list doesn't change the fact it's an array. The code below doesn't modify '3' either - it just replaces the value of a variable.
my $var = 3; $var++; say $var; # Prints 4.

Replies are listed 'Best First'.
Re^9: Perl vs C
by Marshall (Canon) on Mar 16, 2009 at 15:00 UTC
    I don't understand what you mean. Sure it is possible to modify a list! Just like in C, I can pass a reference to a list to be modified and it will be modified! In the code below, I am modifying the actual list since the sub uses the reference to that list.
    #!usr/bin/perl -w use warnings; sub modify_list { my $listRef = shift; @$listRef = grep{!/^b/}@$listRef; #note there is no "return" value here #the list has been modified!!!! } my @list = ("a1", "b23", "c45", "d1", "b43", "b65"); print join (" ",@list),"\n"; #prints: a1 b23 c45 d1 b43 b65 modify_list(\@list); print join (" ",@list),"\n"; #prints a1 c45 d1

      You've only modified array @list again. No lists were modified.

      You're also wrong about there being no return value. It's just being ignored.

        1. Yes all Perl subs have a return value. Correct.

        2. Again we are into semantics. I modified the data structure that was passed into the sub by reference. So write some code that modifies a "list". What would that be? Some authors say that @xyz is a list and that xyz is an array variable that defines a list. What's wrong with saying that @xyz is a list? Or that xyz in the context of @ is a list? Or that (@xyz >1) is a list in a scalar context?

      Just like in C, I can pass a reference to a list to be modified and it will be modified!

      Please demonstrate, with working and tested Perl, how to take a reference to a list without using an array. At that point, I will believe that Perl supports mutable first-class lists as data structures (instead of multiple items on the Perl stack or a series of comma-separated expressions in source code).

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others cooling their heels in the Monastery: (2)
As of 2026-02-18 03:26 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.