Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Paul Gaborit
À (at) Fri, 06 Jan 2006 14:03:39 +0100, Yves Martin écrivait (wrote):
Et de constater sans comprendre que $|=1; (ou $OUTPUT_AUTOFLUSH=1;) ne fonctionne pas s'il est précédé de "use stricts;" - mais pourqoi ??
Êtes-vous sûr de votre diagnostic ?
Normalement $| est utilisable avec ou sans 'use strict;'.
En revanche $OUTPUT_AUTOFLUSH n'est pas utilisable tel quel (comme toutes les variables avec des noms explicites). Il *faut* placer en début de script :
use English '-no_match_vars';
Petit extrait de la doc perlvar :
Les noms suivants ont une signification spéciale en Perl. La plupart de ces noms ont des mnémoniques acceptables ou équivalents dans l'un des shells. Néanmoins, si vous souhaitez utiliser des descripteurs longs, vous avez juste à ajouter
use English;
en tête de votre programme. Cela créera un alias entre les noms courts et les noms longs du module courant. Certains ont même des noms de longueur intermédiaire, généralement empruntés à awk. En général, il est préférable d'invoquer
use English '-no_match_vars';
si vous n'avez pas besoin de $PREMATCH, $MATCH, ou $POSTMATCH, ce qui évite une baisse de performance certaine dans le traitement des expressions rationnelles.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Fri, 06 Jan 2006 14:03:39 +0100,
Yves Martin <ymartin@nospam.fr> écrivait (wrote):
Et de constater sans comprendre que $|=1; (ou $OUTPUT_AUTOFLUSH=1;) ne
fonctionne pas s'il est précédé de "use stricts;" - mais pourqoi ??
Êtes-vous sûr de votre diagnostic ?
Normalement $| est utilisable avec ou sans 'use strict;'.
En revanche $OUTPUT_AUTOFLUSH n'est pas utilisable tel quel (comme
toutes les variables avec des noms explicites). Il *faut* placer en
début de script :
use English '-no_match_vars';
Petit extrait de la doc perlvar :
Les noms suivants ont une signification spéciale en Perl. La
plupart de ces noms ont des mnémoniques acceptables ou
équivalents dans l'un des shells. Néanmoins, si vous souhaitez
utiliser des descripteurs longs, vous avez juste à ajouter
use English;
en tête de votre programme. Cela créera un alias entre les noms
courts et les noms longs du module courant. Certains ont même
des noms de longueur intermédiaire, généralement empruntés à
awk. En général, il est préférable d'invoquer
use English '-no_match_vars';
si vous n'avez pas besoin de $PREMATCH, $MATCH, ou $POSTMATCH,
ce qui évite une baisse de performance certaine dans le
traitement des expressions rationnelles.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Fri, 06 Jan 2006 14:03:39 +0100, Yves Martin écrivait (wrote):
Et de constater sans comprendre que $|=1; (ou $OUTPUT_AUTOFLUSH=1;) ne fonctionne pas s'il est précédé de "use stricts;" - mais pourqoi ??
Êtes-vous sûr de votre diagnostic ?
Normalement $| est utilisable avec ou sans 'use strict;'.
En revanche $OUTPUT_AUTOFLUSH n'est pas utilisable tel quel (comme toutes les variables avec des noms explicites). Il *faut* placer en début de script :
use English '-no_match_vars';
Petit extrait de la doc perlvar :
Les noms suivants ont une signification spéciale en Perl. La plupart de ces noms ont des mnémoniques acceptables ou équivalents dans l'un des shells. Néanmoins, si vous souhaitez utiliser des descripteurs longs, vous avez juste à ajouter
use English;
en tête de votre programme. Cela créera un alias entre les noms courts et les noms longs du module courant. Certains ont même des noms de longueur intermédiaire, généralement empruntés à awk. En général, il est préférable d'invoquer
use English '-no_match_vars';
si vous n'avez pas besoin de $PREMATCH, $MATCH, ou $POSTMATCH, ce qui évite une baisse de performance certaine dans le traitement des expressions rationnelles.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Yves Martin
Paul Gaborit writes:
À (at) Fri, 06 Jan 2006 14:03:39 +0100, Yves Martin écrivait (wrote):
Et de constater sans comprendre que $|=1; (ou $OUTPUT_AUTOFLUSH=1;) ne fonctionne pas s'il est précédé de "use stricts;" - mais pourqoi ??
J'ai bien utilisé 'use English'.
Êtes-vous sûr de votre diagnostic ? Normalement $| est utilisable avec ou sans 'use strict;'.
En ce qui concerne mon diagnostique, voici les informations sur la base d'une Debian Sarge 3.1 ; Perl 5.8.4 ; NET-SNMP 5.1.2-6.2
Sans "use strict": $ snmpget -v 2c -c public localhost .1.3.6.1.4.1.15204.3 SNMPv2-SMI::enterprises.15204.3 = INTEGER: 999
Avec "use strict": $ snmpget -v 2c -c public localhost .1.3.6.1.4.1.15204.3 SNMPv2-SMI::enterprises.15204.3 = No Such Instance currently exists at this OID
Je n'arrive pas à en savoir plus. Pour une raison que j'ignore, il m'est impossible d'ouvrir un fichier (/tmp/mibtest.log) pour tracer les requêtes...
Mais la seule différence entre "ça marche" et "ça ne marche pas" est bien le "use strict".
-- Yves Martin
Paul Gaborit <Paul.Gaborit@invalid.invalid> writes:
À (at) Fri, 06 Jan 2006 14:03:39 +0100,
Yves Martin <ymartin@nospam.fr> écrivait (wrote):
Et de constater sans comprendre que $|=1; (ou $OUTPUT_AUTOFLUSH=1;) ne
fonctionne pas s'il est précédé de "use stricts;" - mais pourqoi ??
J'ai bien utilisé 'use English'.
Êtes-vous sûr de votre diagnostic ?
Normalement $| est utilisable avec ou sans 'use strict;'.
En ce qui concerne mon diagnostique, voici les informations sur la base d'une
Debian Sarge 3.1 ; Perl 5.8.4 ; NET-SNMP 5.1.2-6.2
Sans "use strict":
$ snmpget -v 2c -c public localhost .1.3.6.1.4.1.15204.3
SNMPv2-SMI::enterprises.15204.3 = INTEGER: 999
Avec "use strict":
$ snmpget -v 2c -c public localhost .1.3.6.1.4.1.15204.3
SNMPv2-SMI::enterprises.15204.3 = No Such Instance currently exists at this OID
Je n'arrive pas à en savoir plus. Pour une raison que j'ignore, il m'est
impossible d'ouvrir un fichier (/tmp/mibtest.log) pour tracer les requêtes...
Mais la seule différence entre "ça marche" et "ça ne marche pas"
est bien le "use strict".
Sans "use strict": $ snmpget -v 2c -c public localhost .1.3.6.1.4.1.15204.3 SNMPv2-SMI::enterprises.15204.3 = INTEGER: 999
Avec "use strict": $ snmpget -v 2c -c public localhost .1.3.6.1.4.1.15204.3 SNMPv2-SMI::enterprises.15204.3 = No Such Instance currently exists at this OID
Je n'arrive pas à en savoir plus. Pour une raison que j'ignore, il m'est impossible d'ouvrir un fichier (/tmp/mibtest.log) pour tracer les requêtes...
Mais la seule différence entre "ça marche" et "ça ne marche pas" est bien le "use strict".
-- Yves Martin
Paul Gaborit
À (at) Mon, 09 Jan 2006 10:38:46 +0100, Yves Martin écrivait (wrote):
Paul Gaborit writes:
À (at) Fri, 06 Jan 2006 14:03:39 +0100, Yves Martin écrivait (wrote):
Et de constater sans comprendre que $|=1; (ou $OUTPUT_AUTOFLUSH=1;) ne fonctionne pas s'il est précédé de "use stricts;" - mais pourqoi ??
J'ai bien utilisé 'use English'.
Êtes-vous sûr de votre diagnostic ? Normalement $| est utilisable avec ou sans 'use strict;'.
En ce qui concerne mon diagnostique, voici les informations sur la base d'une Debian Sarge 3.1 ; Perl 5.8.4 ; NET-SNMP 5.1.2-6.2
Sans "use strict": $ snmpget -v 2c -c public localhost .1.3.6.1.4.1.15204.3 SNMPv2-SMI::enterprises.15204.3 = INTEGER: 999
Avec "use strict": $ snmpget -v 2c -c public localhost .1.3.6.1.4.1.15204.3 SNMPv2-SMI::enterprises.15204.3 = No Such Instance currently exists at this OID
Je n'arrive pas à en savoir plus. Pour une raison que j'ignore, il m'est impossible d'ouvrir un fichier (/tmp/mibtest.log) pour tracer les requêtes...
Mais la seule différence entre "ça marche" et "ça ne marche pas" est bien le "use strict".
Et qu'est-ce qui vous faisait croire que cela avait quelque chose à voir avec l'utilisation de $| ???
En l'occurrence, votre script ne peut pas marcher avec 'use strict' car vos variables ($MYMIB et $command) ne sont pas déclarées (par 'my' ou 'our'). Voici le script modifié pour qu'il fonctionne avec 'use strict' :
PS: lorsque vous postez un script, évitez de le décorer avec de "> |" au début de chaque ligne. Ça évite la tâche de nettoyage aux lecteurs de vos messages...
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Mon, 09 Jan 2006 10:38:46 +0100,
Yves Martin <ymartin@nospam.fr> écrivait (wrote):
Paul Gaborit <Paul.Gaborit@invalid.invalid> writes:
À (at) Fri, 06 Jan 2006 14:03:39 +0100,
Yves Martin <ymartin@nospam.fr> écrivait (wrote):
Et de constater sans comprendre que $|=1; (ou
$OUTPUT_AUTOFLUSH=1;) ne fonctionne pas s'il est précédé de "use
stricts;" - mais pourqoi ??
J'ai bien utilisé 'use English'.
Êtes-vous sûr de votre diagnostic ?
Normalement $| est utilisable avec ou sans 'use strict;'.
En ce qui concerne mon diagnostique, voici les informations sur la
base d'une Debian Sarge 3.1 ; Perl 5.8.4 ; NET-SNMP 5.1.2-6.2
Sans "use strict":
$ snmpget -v 2c -c public localhost .1.3.6.1.4.1.15204.3
SNMPv2-SMI::enterprises.15204.3 = INTEGER: 999
Avec "use strict":
$ snmpget -v 2c -c public localhost .1.3.6.1.4.1.15204.3
SNMPv2-SMI::enterprises.15204.3 = No Such Instance currently
exists at this OID
Je n'arrive pas à en savoir plus. Pour une raison que j'ignore, il
m'est impossible d'ouvrir un fichier (/tmp/mibtest.log) pour
tracer les requêtes...
Mais la seule différence entre "ça marche" et "ça ne marche pas"
est bien le "use strict".
Et qu'est-ce qui vous faisait croire que cela avait quelque chose à
voir avec l'utilisation de $| ???
En l'occurrence, votre script ne peut pas marcher avec 'use strict'
car vos variables ($MYMIB et $command) ne sont pas déclarées (par 'my'
ou 'our'). Voici le script modifié pour qu'il fonctionne avec 'use
strict' :
PS: lorsque vous postez un script, évitez de le décorer avec de "> |"
au début de chaque ligne. Ça évite la tâche de nettoyage aux lecteurs
de vos messages...
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
Sans "use strict": $ snmpget -v 2c -c public localhost .1.3.6.1.4.1.15204.3 SNMPv2-SMI::enterprises.15204.3 = INTEGER: 999
Avec "use strict": $ snmpget -v 2c -c public localhost .1.3.6.1.4.1.15204.3 SNMPv2-SMI::enterprises.15204.3 = No Such Instance currently exists at this OID
Je n'arrive pas à en savoir plus. Pour une raison que j'ignore, il m'est impossible d'ouvrir un fichier (/tmp/mibtest.log) pour tracer les requêtes...
Mais la seule différence entre "ça marche" et "ça ne marche pas" est bien le "use strict".
Et qu'est-ce qui vous faisait croire que cela avait quelque chose à voir avec l'utilisation de $| ???
En l'occurrence, votre script ne peut pas marcher avec 'use strict' car vos variables ($MYMIB et $command) ne sont pas déclarées (par 'my' ou 'our'). Voici le script modifié pour qu'il fonctionne avec 'use strict' :
PS: lorsque vous postez un script, évitez de le décorer avec de "> |" au début de chaque ligne. Ça évite la tâche de nettoyage aux lecteurs de vos messages...
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Yves Martin
Paul Gaborit writes:
PS: lorsque vous postez un script, évitez de le décorer avec de "> |" au début de chaque ligne. Ça évite la tâche de nettoyage aux lecteurs de vos messages...
Mille excuses... c'est une emacserie !
Merci d'avoir déverminé mon code. Je me sens idiot de ne pas avoir tenté une exécution en ligne de commande pour voir les erreurs !
-- Yves Martin
Paul Gaborit <Paul.Gaborit@invalid.invalid> writes:
PS: lorsque vous postez un script, évitez de le décorer avec de "> |"
au début de chaque ligne. Ça évite la tâche de nettoyage aux lecteurs
de vos messages...
Mille excuses... c'est une emacserie !
Merci d'avoir déverminé mon code. Je me sens idiot de ne pas avoir tenté une
exécution en ligne de commande pour voir les erreurs !
PS: lorsque vous postez un script, évitez de le décorer avec de "> |" au début de chaque ligne. Ça évite la tâche de nettoyage aux lecteurs de vos messages...
Mille excuses... c'est une emacserie !
Merci d'avoir déverminé mon code. Je me sens idiot de ne pas avoir tenté une exécution en ligne de commande pour voir les erreurs !