Jonathan Gardner <jgard...@jonathangardner.net> writes: > One of the bad things with languages like perl
FYI: the language is called Perl, the program that executes a Perl program is called perl. > without parentheses is that getting a function ref is not obvious. You > need even more syntax to do so. In perl: > > foo(); # Call 'foo' with no args. > $bar = foo; # Call 'foo; with no args, assign to '$bar' > $bar = &foo; # Don't call 'foo', but assign a pointer to it to '$bar' > # By the way, this '&' is not the bitwise-and '&'!!!! It should be $bar = \&foo Your example actually calls foo... [..] > One is simple, consistent, and easy to explain. The other one requires > the introduction of advanced syntax and an entirely new syntax to make > function calls with references. The syntax follows that of referencing and dereferencing: $bar = \...@array; # bar contains now a reference to array $bar->[ 0 ]; # first element of array referenced by bar $bar = \%hash; # bar contains now a reference to a hash $bar->{ key }; # value associated with key of hash ref. by bar $bar = \&foo; # bar contains now a reference to a sub $bar->( 45 ); # call sub ref. by bar with 45 as an argument Consistent: yes. New syntax? No. Also, it helps to think of $ as a thing @ as thingies indexed by numbers % as thingies indexed by keys -- John Bokma j3b Hacking & Hiking in Mexico - http://johnbokma.com/ http://castleamber.com/ - Perl & Python Development -- http://mail.python.org/mailman/listinfo/python-list