Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /usr/bin/perl
- ###############################################################################
- # Why you should not use return undef in every situation?
- # - In list context it became an array w/ one member, and it's true
- # - In scalar context it became UNDEF, and it's false
- # - If you are not sure, use the { return wantarray ? : ; }
- # or simple { return; }
- #
- # - The same goes with 0 and empty string
- ###############################################################################
- use strict;
- use warnings;
- use Data::Dumper;
- ###############################################################################
- my @a;
- sub returnCheck_1() { return undef; }
- sub returnCheck_2() { return (); }
- sub returnCheck_3() { return wantarray ? () : undef; }
- sub returnCheck_4() { my @a; return @a; }
- sub returnCheck_5() {
- my @a = qw(pqs local stocek kinai vcs izlelo hentes wikinger MAGIC w35 kurdisztan hoztam_magammal);
- undef(@a);
- return @a;
- }
- sub returnCheck_6() { return; }
- #------------------------------------------------------------------------------
- warn "The \@a = { undef; } is an array with one member and \$a[0] == undef\n";
- @a = returnCheck_1();
- warn Data::Dumper::Dumper(\@a) . "\n";
- warn "\@a in boole enviroment becomes: " . (@a ? 'true' : 'false') . "\n\n";
- warn '-' x 80 . "\n";
- #------------------------------------------------------------------------------
- warn "The \@a = { (); } is an empty array\n";
- @a = returnCheck_2();
- warn Data::Dumper::Dumper(\@a) . "\n";
- warn "\@a in boole enviroment becomes: " . (@a ? 'true' : 'false') . "\n\n";
- warn '-' x 80 . "\n";
- #------------------------------------------------------------------------------
- warn "The \@a = { wantarray ? () : undef; } is an empty array or an undef\n";
- @a = returnCheck_3();
- warn Data::Dumper::Dumper(\@a) . "\n";
- warn "\@a in boole enviroment becomes: " . (@a ? 'true' : 'false') . "\n\n";
- warn '-' x 80 . "\n";
- #------------------------------------------------------------------------------
- warn "The \@a = { my \@arr; return \@arr; } is a NOT DEFINED array\n";
- @a = returnCheck_4();
- warn Data::Dumper::Dumper(\@a) . "\n";
- warn "\@a in boole enviroment becomes: " . (@a ? 'true' : 'false') . "\n\n";
- warn '-' x 80 . "\n";
- #------------------------------------------------------------------------------
- warn "The \@a = { undef(\@arr); return \@arr; } is an UNDEFINED array\n";
- @a = returnCheck_5();
- warn Data::Dumper::Dumper(\@a) . "\n";
- warn "\@a in boole enviroment becomes: " . (@a ? 'true' : 'false') . "\n\n";
- warn '-' x 80 . "\n";
- #------------------------------------------------------------------------------
- warn "The \@a = { return; } is an UNDEFINED return value\n";
- @a = returnCheck_6();
- warn Data::Dumper::Dumper(\@a) . "\n";
- warn "\@a in boole enviroment becomes: " . (@a ? 'true' : 'false') . "\n\n";
- my @b;
Advertisement
Add Comment
Please, Sign In to add comment