Quelle est la différence entre “||” et “ou” en Perl?
Quelle est la différence entre le C-les opérateurs de type &&
, ||
, ... et leur Perl lisible version "and
", "or
", ... ?
Il semble que internet code utilise à la fois :
open (FILE, $file) or die("cannot open $file");
open (FILE, $file) || die("cannot open $file");
- Voir
perldoc perlop
pour un bon organigramme de priorité, et consultez la section sur le "ou Logique" pour plus d'exemples: perldoc.perl.org/... - Aussi, l'utilisation lexicale descripteurs de fichiers et les trois-argument forme d'ouvrir. Inclure l'erreur retournée par le système dans l'argument de mourir:
open my $file_h, '<', $file or die "Cannot open '$file': $!";
- Ou "utiliser autodie"
Vous devez vous connecter pour publier un commentaire.
De Perl Doc ..
Ceci est la liste de l'opérateur . Sur le côté droit de la liste de l'opérateur, il a une très faible priorité, tel qu'il contrôle toutes séparées par des virgules expressions s'y trouvent. Les seuls opérateurs de priorité plus basse sont les opérateurs logiques "et", "ou" et "non", qui peut être utilisé pour évaluer les appels vers les opérateurs de liste sans le besoin pour des parenthèses.
Ou logique, Défini ou et Ou Exclusif
Binaire "ou" renvoie à la logique de la disjonction des deux environnant les expressions. C'est l'équivalent de || à l'exception de la très faible priorité. Ceci le rend utile pour le contrôle de flux de
Cela signifie qu'il court-circuits: c'est à dire, le droit d'expression est évaluée uniquement si la partie gauche de l'expression est fausse. En raison de sa priorité, vous devriez probablement éviter l'utilisation de cette assignation, uniquement pour le contrôle de flux.
Cependant, lorsqu'il s'agit d'une liste-cadre de cession et que vous essayez d'utiliser "||" pour le contrôle de flux, vous avez probablement besoin de "ou", de sorte que la cession a une priorité plus élevée.
Puis à nouveau, vous pouvez toujours utiliser des parenthèses.
Si aucune liste de l'opérateur (print(), etc.) ou tout opérateur unaire (chdir(), etc.) est suivi d'une parenthèse ouvrante comme le prochain jeton, l'opérateur et les arguments entre parenthèses sont prises pour être de la plus haute priorité, tout comme une fonction normale d'appel. Par exemple, parce que nommé opérateurs unaires sont une priorité plus élevée que ||:
La seule différence est leur priorité.
!
,&&
,||
, et^
ont priorité élevée, tels qu'ils sont utiles dans la construction d'une expression;not
,and
,or
, etxor
ont une faible priorité, tels qu'ils sont utiles pour le contrôle de flux entre ce sont essentiellement différentes expressions.Le "&&" et "||" les opérateurs ont une priorité plus élevée que leur "et", "ou" homologues.