[Melbourne-pm] Perl chop behaviour
jarich at perltraining.com.au
Thu Aug 11 22:07:48 PDT 2005
Becky Alcorn wrote:
> Example code is:
> use strict;
> use warnings;
> use Data::Dumper;
> my @array = (
> ['aa', 'bb'],
> my $chr = chop(@array);
> print Dumper(\@array) . "\n";
> print "Char: $chr\n";
> And the output from that is:
> $VAR1 = [
> Char: )
> I can see that it is taking the ')' from the array reference. Is it a bug
> in my version of Perl (5.8.3), or does that actually make sense at some
> level? I understand that it is a little bit difficult for Perl to decide
> what to do in this case, but I didn't expect it to do that!
I believe that chop forces string context on the things its given to chop.
Thus the array reference is being stringified to the only thing that makes sense
in a string context and that is being chopped. This allows chop to work as
expected on both numbers and strings.
What would you like chop to do when given a reference? Would that be different
for hash references? Subroutine references? Regular expression references?
References to objects, globs, filehandles? I suspect stringifying them and
chopping that is about as sensible as any other easily implemented option.
How'd you come by this?
("`-''-/").___..--''"`-._ | Jacinta Richardson |
`6_ 6 ) `-. ( ).`-.__.`) | Perl Training Australia |
(_Y_.)' ._ ) `._ `. ``-..-' | +61 3 9354 6001 |
_..`--'_..-_/ /--'_.' ,' | contact at perltraining.com.au |
(il),-'' (li),' ((!.-' | www.perltraining.com.au |
More information about the Melbourne-pm