IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Condition qui ne fonctionne pas


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Points : 18
    Points
    18
    Par défaut Condition qui ne fonctionne pas
    Bonjour
    Je ne suis pas du tout pro en Perl, mais j'ai des bases smile
    J'ai codé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    #!/bin/perl -w
    Xchat::hook_command("addwhite", cmd_adduser);
    sub cmd_adduser{
    	my $nick = $_[0][1];
    	my $nickinfo = Xchat::user_info($nick);
    	my $nickhost = $nickinfo->{host};
    	my $whitelist = "";
    	open(FICLIST, "<".$homedir."\\whitelist"); 
    	@users = <FICLIST>;
    	my $i = 0;
    	while (defined( $users[$i] )) {
    		chomp @users[$i];
    		if($nickhost==@users[$i]){
    			Xchat::print("***-\00305$nick-\00309".length(@users[$i])."-@users[$i]-\00302".length($nickhost)."-$nickhost-\017***", $netw, $serv);
    			Xchat::print("*** \00309$nick est déjà dans la liste blanche ! \017***", $netw, $serv);
    			$whitelist = "ok";
    		}
    		$i += 1
    	}
    	close(FICLIST);
            if(!$whitelist){
    		# Xchat::print("*** \00305$whitelist \00309$nickhost !\017\n", $netw, $serv);
    		if($nickhost){
    			Xchat::print("*** \00305$nick \00309Ajouté(e) à la liste blanche !\017\n", $netw, $serv);
    			open(FICLIST, ">>".$homedir."\\whitelist"); 
    			print ( FICLIST "$nickhost\n" );
    			close(FICLIST);
    		} elsif(!$nickhost){
    			Xchat::print("*** \00305Aucun host trouver pour $nick\017\n", $netw, $serv);
    		}
    	}
    	$whitelist = "";
    	return Xchat::EAT_NONE;
    }
    Et en sortie j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     ***-Diablotine-15-CroC@CroC.OdilE-38-Virginie@D0A4F1C8.CBA07B7E.88669293.IP-***
     *** Diablotine est déjà dans la liste blanche ! ***
     ***-Diablotine-17-Rygel@Bio.Dominar-38-Virginie@D0A4F1C8.CBA07B7E.88669293.IP-***
     *** Diablotine est déjà dans la liste blanche ! ***
    * addwhite :Unknown command
    Voila je comprend pas ce que j'ai mal fait
    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Je suppose que tu as extrait une partie du code, puisqu'on ne voit pas le module Xchat ?! (ni son appel avec 'require' ou 'use')
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Points : 18
    Points
    18
    Par défaut
    Ben j'ai jamais mis ça dans mes script Xchat ... mais tu crois que c'est pour ça que ça bug ? parce que tout fonctionne sauf le test 'if' qui ne fonctionne pas, du moins a l'envers !

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 71
    Points : 87
    Points
    87
    Par défaut
    re

    comme tu fais appel a tes scripts perl depuis Xchat, effectivement, cela fonctionne sans faire d'appel à un quelconque module.

    par contre, une protection de mp ou d'ignore de ce type n'est pas réellement efficace.
    car : decacher son host/avoir un masquage de l'host/changement d'ip/changement d'ident et hop, ta personne n'est plus dans ta true list ( de même pour les listes d'ignore/ban/akick/... ).

    cordialement

    ours

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Ahem... je n'avais pas compris que ce script était lancé depuis Xchat... je sors ^^
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Points : 18
    Points
    18
    Par défaut
    Merci Ours, comment tu ferais toi ? (dans le principe hein ...)
    peut être avec les nick et detection de changement de nick ... ?
    et pourquoi ma mon test if ne fonctionne pas ?

    J'ai essayer comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    #!/bin/perl -w
    #
    use Xchat qw(:all);
    register("Script perso", "1.0", "redefinition de /away + anti-kick");
    #
    hook_command("ADDWHITE", \&adduser);
    my ($hmsg, $hnot, $homedir);
    $homedir = get_info(xchatdir);
    sub adduser{
    	my $nick = $_[0][1];
    	my $nickinfo = user_info($nick);
    	my $nickhost = $nickinfo->{host};
    	my $whitelist = "";
    	open(FICLIST, "<".$homedir."\\whitelist"); 
    	@users = <FICLIST>;
    	my $i = 0;
    	while (defined( $users[$i] )) {
    		chomp @users[$i];
    		if($nickhost==@users[$i]){
    			print("***-\00305$nick-\00309".length(@users[$i])."-@users[$i]-\00302".length($nickhost)."-$nickhost-\017***", $netw, $serv);
    			print("*** \00309$nick est déjà dans la liste blanche ! \017***", $netw, $serv);
    			$whitelist = "ok";
    		}
    		$i += 1
    	}
    	close(FICLIST);
    	if(!$whitelist){
    		# print("*** \00305$whitelist \00309$nickhost !\017\n", $netw, $serv);
    		if($nickhost){
    			print("*** \00305$nick \00309Ajouté(e) à la liste blanche !\017\n", $netw, $serv);
    			open(FICLIST, ">>".$homedir."\\whitelist"); 
    			print ( FICLIST "$nickhost\n" );
    			close(FICLIST);
    		} elsif(!$nickhost){
    			print("*** \00305Aucun host trouver pour $nick\017\n", $netw, $serv);
    		}
    	}
    	$whitelist = "";
    	return EAT_NONE;
    }
    # Au demarrage du script, on indique que le script est chagé.
    print("Anti Kick / Pv chargé !");
    et plus rien ne fonctionne

  7. #7
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    EDIT: message posté deux fois suite à un problème de connexion. Voir ci-dessous.

  8. #8
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Je ne connais pas du tout Xchat, mais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sub cmd_adduser{
    	my $nick = $_[0][1];
    me paraît bizarre. A l'entre dans une fonction, le tableau @_ contient la liste des paramètres passés à la fonction, et cette liste est "aplatie", c'est-à-dire qu'elle ne peut pas contenir de tableau de tableaux. Donc, $_[0][1] ne doit pas pouvoir marcher. dans ce contexte.

    Ou alors tu reçois une référence à un tableau de tableaux, mais, dans ce cas, la syntaxe n'est pas correcte.

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 71
    Points : 87
    Points
    87
    Par défaut
    re,
    Citation Envoyé par Lolo78 Voir le message
    me paraît bizarre. A l'entre dans une fonction, le tableau @_ contient la liste des paramètres passés à la fonction, et cette liste est "aplatie", c'est-à-dire qu'elle ne peut pas contenir de tableau de tableaux. Donc, $_[0][1] ne doit pas pouvoir marcher. dans ce contexte.

    Ou alors tu reçois une référence à un tableau de tableaux, mais, dans ce cas, la syntaxe n'est pas correcte.
    en fait, quand on fait appel a une fonction d'un script perl dans Xchat, le $_[0][1] contient le 2eme mot.
    par exemple, si les options passés dans la commande sont : "les sanglots longs des violons de l'automne"
    $_[0][1] contiendra "sanglots"
    $_[1][2] contiendra "longs des violons de l'automne"

    Citation Envoyé par Moymoy Voir le message
    Merci Ours, comment tu ferais toi ? (dans le principe hein ...)
    peut être avec les nick et detection de changement de nick ... ?
    et pourquoi ma mon test if ne fonctionne pas ?
    j'avais un anti-pv fait ainsi :
    ( je travaillais directement le RAW du serveur et non pas les messages )
    Xchat::hook_server( 'PRIVMSG',"raw_privmsg");
    -ouverture du mp si pas dans truelist : add en ignore ( uniquement sur les mps ) + message dans le (log) du serveur avec le message envoyé + message dans la fenetre courante.
    -si dans truelist, alors le mp était ouvert normalement.

    par contre, ma truelist contenait ceci : <pseudo>=::=<ident>::=<serveur>
    cela m'obligeait à ajouter chaque "variation" de pseudo en truelist, ainsi que sur chaque serveur.
    le soucis de le mettre sur l'host, c'est les facilités avec lequel ca se change.

    hesite pas si tu as des questions.

    cordialement

    ours

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Points : 18
    Points
    18
    Par défaut
    Ouais Ours, c'est ce que je fait aussi pour les RAW, mais la je comprend pas pourquoi mon 'if' ne fonctionne pas, et la dans ce code c'est un appel de commande /addwhite nick. le truc c'est que le 'if' est TRUE alors qu'il ne devrais pas ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #!/bin/perl -w
    #
    # use Xchat qw(:all);
    Xchat::register("Script perso", "1.0", "Moya white list");
    Xchat::hook_command("ADDWHITE", adduser);
    my $homedir = Xchat::get_info(xchatdir);
    sub adduser{
    	my $nick = $_[0][1];
    	my $info = Xchat::user_info($nick);
    	my $uhost = $info->{host};
    	my $whitelist = "";
    	my $i = 0;
    	open(FICLIST, "<".$homedir."\\whitelist"); 
    	@users = <FICLIST>;
    	while (defined( $users[$i] )) {
    		chomp @users[$i];
    		if($uhost==@users[$i]){
    			Xchat::print("***-\00305$nick-\00309".length(@users[$i])."-@users[$i]-\00302".length($uhost)."-$uhost-\017***", $netw, $serv);
    		#	Xchat::print("*** \00309$nick est déjà dans la liste blanche ! \017***", $netw, $serv);
    		$whitelist = "ok";
    		}
    		Xchat::print("Whitelist = $whitelist -");
    		$i += 1
    	}
    	close(FICLIST);
    	if(!$whitelist){
    		if($uhost){
    			Xchat::print("*** \00305$nick \00309Ajouté(e) à la liste blanche !\017\n", $netw, $serv);
    			open(FICLIST, ">>".$homedir."\\whitelist"); 
    			print ( FICLIST "$uhost\n" );
    			close(FICLIST);
    		} elsif(!$uhost){
    			Xchat::print("*** \00305Aucun host trouver pour $nick\017\n", $netw, $serv);
    		}
    	}
    	$whitelist = "";
    	return Xchat::EAT_NONE;
    }
    Xchat::print("Whitelist by Moya");
    le if($uhost==@users[$i]) est toujours VRAI alors que c'est pas possible ... c'est ça que je comprend pas, en plus j'ai exactement le même problème avec un autre script.
    et en retour j'ai un 'ADDWHITE commande inconnue' alors que la fonction marche ...j'veux dire elle est parcourue puisque j'ai les retours ...

  11. #11
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Citation Envoyé par Lolo78 Voir le message
    Je ne connais pas du tout Xchat, mais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sub cmd_adduser{
    	my $nick = $_[0][1];
    me paraît bizarre. A l'entre dans une fonction, le tableau @_ contient la liste des paramètres passés à la fonction, et cette liste est "aplatie", c'est-à-dire qu'elle ne peut pas contenir de tableau de tableaux. Donc, $_[0][1] ne doit pas pouvoir marcher. dans ce contexte.

    Ou alors tu reçois une référence à un tableau de tableaux, mais, dans ce cas, la syntaxe n'est pas correcte.
    Lolo, et c'est sans doute ce que j'aime le moins en perl, le déréférencement en perl ne nécessite pas l'usage de l'opérateur -> ou ${}, il est optionnel (j'aurais vraiment préféré qu'il soit obligatoire, afin que le code soit plus clair).
    Ainsi, toutes ces écritures sont légales :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    my @param = ([ "toto", "titi", "tutu"], "fifi", "riri", "loulou") ;
    my $titi = $param[0][1]; # titi
    my $titi2 = $param[0]->[1]; # titi aussi
    my $tutu = ${$param[0]}[2]; # toto
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    my @param = ([ "toto", "titi", "tutu"], "fifi", "riri", "loulou") ;
    my $titi = $param[0][1]; # titi
    my $titi2 = $param[0]->[1]; # titi aussi
    my $tutu = ${$param[0]}[2]; # toto
    heu my $tutu = ${$param[0]}[2]; # toto ... tutu pas toto !

  13. #13
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Oui
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Points : 18
    Points
    18
    Par défaut
    Tout ça n'explique pas pourquoi mon 'if' ne fonctionne pas ...

  15. #15
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Cette expression
    est légale en perl, mais pourrait ne pas faire ce que l'on veut.
    En effet, tu compares un scalaire ($uhost) et un tableau (@users[$i]).
    Malheureusement, perl est permissif et accepte cette écriture en l'interprétant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($uhost == $users[$i])
    Si tu avais ajouté "use warnings" en début de script, perl te l'aurais indiqué.
    Je t'invite donc d'abord à ajouter ces deux lignes en début de script, histoire de voir si ça ne te sors pas des diagnostics d'erreur ou de warning :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    use strict;
    use warnings;
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Points : 18
    Points
    18
    Par défaut
    merci Philou67430 ... je precise quant même que je suis sous Xchat ... et que quand je met ces deux lignes ... il me fait une erreur a chaque ligne, donc voila

  17. #17
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 71
    Points : 87
    Points
    87
    Par défaut
    re,

    Citation Envoyé par Moymoy Voir le message
    merci Philou67430 ... je precise quant même que je suis sous Xchat ... et que quand je met ces deux lignes ... il me fait une erreur a chaque ligne, donc voila
    euh sur mes scripts, j'avais toujours les 2 uses sans erreurs, par contre, je devais mettre un
    à la fin de chaque script.

    cordialement

    ours

  18. #18
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($uhost == $users[$i])
    Comme Philou te l'a dit, il faut $users[$i] et non @users[$i], mais il y a sans doute une seconde erreur: cette comparaison ne marche correctement que si tes valeurs comparées sont des nombres, ce qui n'est vraisemblablement le cas. Si ce sont des chaîne de caractères, il faut ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($uhost eq $users[$i])
    Petit exemple sous le debuger Perl:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      DB<7> print "true" if "mardi" == "mercredi"
    true
      DB<8> print "true" if "mardi" eq "mercredi"
     
      DB<9>

  19. #19
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Lolo, et c'est sans doute ce que j'aime le moins en perl, le déréférencement en perl ne nécessite pas l'usage de l'opérateur -> ou ${}, il est optionnel (j'aurais vraiment préféré qu'il soit obligatoire, afin que le code soit plus clair).
    Ainsi, toutes ces écritures sont légales :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    my @param = ([ "toto", "titi", "tutu"], "fifi", "riri", "loulou") ;
    my $titi = $param[0][1]; # titi
    my $titi2 = $param[0]->[1]; # titi aussi
    my $tutu = ${$param[0]}[2]; # toto
    Exact. Mais ton @param est un tableau de tableaux, pas une référence vers un tableau de tableaux. Or il me semblait qu'un simple tableau de tableaux était aplati en une seule liste lors d'un passage de paramètre à une fonction. Ce n'est apparemment pas le cas. Au temps pour moi.

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Points : 18
    Points
    18
    Par défaut
    ... 'eq' et '==' c'est différent ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Condition qui ne fonctionne pas
    Par korked dans le forum Général Java
    Réponses: 0
    Dernier message: 16/05/2015, 20h44
  2. Condition qui ne fonctionne pas dans une page jsp
    Par Lopak dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 29/04/2010, 16h37
  3. condition qui ne fonctionne pas
    Par Invité(e) dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2010, 16h27
  4. condition (if/else) qui ne fonctionne pas
    Par oceane751 dans le forum Langage
    Réponses: 8
    Dernier message: 24/07/2007, 23h58
  5. [vb.net] Condition qui ne fonctionne pas
    Par dyree dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/06/2006, 09h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo