XP is just a number PerlMonks

### Re^5: Mini-Tutorial: Scalar vs List Assignment Operator

 on Aug 22, 2009 at 01:35 UTC ( #790513=note: print w/replies, xml ) Need Help??

Further: approaching the question of "what is the difference between list and scalar context, and when are they applied?" via an experiential/experimental approach with wantarray is eminently practical. To wit, here's a simple test script I wrote when I wanted to clarify the matter for myself. This most definitely constitutes Another Way To Do It:
```#!/usr/bin/perl -w

sub polymorphic {

my \$context=wantarray();

if (\$context) {
print "list context\n";
return @_;
} elsif (defined(\$context)) {
print "scalar context\n";
return join ":", @_;
} else {
warn "value of polymorphic() used in void context. Values were (\n
+";
# so no point in returning anything, but do print
print join ",", @_;
print ")\n";
}
}

sub show_args {
print "got ", scalar(@_), " args:\n";
map {print "  \$_\n" } @_;
}

show_args("a", polymorphic("b","c","d"));

my \$string=polymorphic(1,2,3);
my @array=polymorphic(4,5,6);

show_args(\$string,@array);

# make warning 1

polymorphic("unused");

# following is tricky because we don't know context until tricky is
# actually called.
sub tricky {
polymorphic(@_);
}

my \$string2=tricky(qw(a b c d));
my @array2=tricky(qw(s t u v));

show_args(\$string2,@array2);
# make warning 2
tricky(qw(fee fi fo fum));

# what happens if we use return keyword explicitly?
sub tricky_2 {
return polymorphic(@_);
}

my \$string3=tricky_2(qw(a e i o u));
my @array3=tricky_2(qw(w x y z));

show_args(\$string3,@array3);

# (turns out we can use return or not; same result--no warning)
# (but this should generate one)
tricky_2(5,6,7,8);

sub tricky_3 {
my \$first=shift;
my \$second=shift;
my @remaining=@_;

print "\$first, \$second, (";
print join ",", @remaining;
print ")\n";

};

Create A New User
Node Status?
node history
Node Type: note [id://790513]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (8)
As of 2018-04-23 14:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
My travels bear the most uncanny semblance to ...

Results (84 votes). Check out past polls.

Notices?