Documentation perldoc sur les opérateurs
Binary "||" performs a short-circuit logical OR operation. That is, if the left operand is true, the right operand is not even evaluated. Scalar or list context propagates down to the right operand if it is evaluated.
Note that "|" and "^" have lower priority than relational operators, so for example the brackets are essential in a test like
1 2 3 4
| sub printdata {
my $cat=shift;
if(defined $cat) {
my $value=shift || 1; |
on récupère le premier argument passé au sous-programme dans $cat et si celui-ci est défini, on essaie de placer le second argument dans $value.
Je ne sais pas ce que celui qui a écrit ce code veut faire mais peut-être manque-t-il des parenthèses
my $value = (shift || 1);
ce qui ferait que sans second argument $value serait mis à 1 par défaut.
Partager