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 © 2002 O'Reilly & Associates. All rights reserved.