You have a function that returns many values, but you only care about some of them. The
stat
function is a classic example: often you only want one value from its long return list (mode, for instance).
Either assign to a list with
undef
in some of the slots:
($a, undef, $c) = func();
or else take a slice of the return list, selecting only what you want:
($a, $c) = (func())[0,2];
Using dummy temporary variables is wasteful:
($dev,$ino,$DUMMY,$DUMMY,$uid) = stat($filename);
Use
undef
instead of dummy variables to discard a value:
($dev,$ino,undef,undef,$uid) = stat($filename);
Or take a slice, selecting just the values you care about:
($dev,$ino,$uid,$gid) = (stat($filename))[0,1,4,5];
If you want to put an expression into list context and discard all its return values (calling it simply for side effects), as of version 5.004 you can assign to the empty list:
() = some_function();
The discussion on
slices
in
Chapter 2
of
Programming Perl
and
perlsub
(1);
Recipe 3.1
Copyright © 2001 O'Reilly & Associates. All rights reserved.