explication de next if , tie , unpack - Perl - Programmation
Marsh Posté le 29-10-2008 à 08:45:16
j'ai plus de detail sur ce que je capte pas,
si vous pouviez m aider, sur le net j'ai quasiement rien trouver qui me permette de comprendre
( l anglais c est pas mon fort)
j'ai meme ceci, je comprend pas ce que fait le next if ! ??
est ce que sa veut dire que si la ligne est vide on passe à la suivant ?
Code :
|
dans ce bout de code le /i c'est pour etre insensible a la casse, par contre le /io, pije pas trop,
le /o signifie qu'on ne revalue pas donc pas d'interpolation, je comprend pas ce que sa signifie ?
Le fait d'avoir cela
Citation : /^CB$/io && do |
: cela signifie si je trouve CB alors je fait ce qu'il y a dans le do ??
pourquoi mettre && si c est cela , en le lisant moi je comprends si CB et ??
le last je pense que j'ai compris, c'est une fois que je rentre dans le do alors avec le last je ressor
de la boucle foreach.
Code :
|
j'ai ceci aussi, je ne comprend pas aussi,
le tie ???
je sais qu'il utilise ce module use Config::IniFiles;, donc je pense que c'est pour iniliser
le tableau avec toute les valeurs du fichier ???
Code :
|
j'ai une variable declarer comme ceci, je comprend pas le -\d{10} :
Code :
|
Marsh Posté le 29-10-2008 à 09:51:21
je ne connaissais pas cette synthaxe, juste le fait de faire cela
sa permet d alimenter le tableau avec tout ce qu il y a dans le fichier;
il fait comment , chaque ligne est mise dans une colonne?
Code :
|
Marsh Posté le 29-10-2008 à 15:59:35
Chanque ligne est mise dans une case du tableau. Si besoin tu peux changer ce que Perl considère comme une "ligne" en modifiant la variable $/ (dollar slash).
Marsh Posté le 29-10-2008 à 16:06:18
donny3 a écrit : salut,lenext if signifie que si $ligne = /^\s*(?:#|$)/ alors on passe a la ligne suivant et on ne fait pas un print pour cette ligne?? |
Oui,
next if $ligne = /^\s*(?:#|$)/
est équivalent à
if $ligne = /^\s*(?:#|$)/ {next;}
donny3 a écrit : dans le code j 'ai aussi des unpack?? |
A priori non, ca extrait d'une chaine de caracteres, un ensemble de valeurs.
donny3 a écrit : il utilise aussi tie devant des hash |
Ca sert a camoufler un objet (en perl orienté objet) dans une variable. Lorsqu'on lit la variable, ou lorsqu'on ecrit dedans (ie on lui assigne une valeur), on appelle en fait, sans le voir, des methodes spécifiques à la classe.
A+,
Marsh Posté le 29-10-2008 à 16:33:50
donny3 a écrit : j'ai plus de detail sur ce que je capte pas,
|
Ce code m'a l'air faux: c'est probablement chomp $line; qui devrait y figurer, auquel cas, ce code signifierait a priori: virer le dernier caractere de la ligne en cours (le '\n'), et passer a la ligne suivante si la ligne est vide (ie si la ligne ne contenait qu'un '\n' au départ)
donny3 a écrit :
: cela signifie si je trouve CB alors je fait ce qu'il y a dans le do ??
|
le o indique qu'on ne compile qu'une seule fois l'expression reguliere (par défaut, elles sont réévaluées a chaque utilisation) ce qui est une optimisation.
Code :
|
C'est probablement équivalent à
Code :
|
donny3 a écrit : j'ai ceci aussi, je ne comprend pas aussi,
|
Ici, tu associes la variable %tabini a un objet de la classe Config::IniFiles, construit avec la parametrisation ( -file => "file.conf" )
Ca équivaut grosso modo a faire un
my $tabini = Config::IniFiles->new(-file => "file.conf" ) sauf qu'on cree l'objet indirectement ici.
donny3 a écrit : j'ai une variable declarer comme ceci, je comprend pas le -\d{10} :
|
Pas assez d'info pour répondre ici a priori, car il y a une quote non fermée on dirait.
A priori, dans le contexte d'une expression reguliere, il pourrait s'agir d'un nombre de exactement 10 chiffres, le \d{10}
A+,
Marsh Posté le 29-10-2008 à 17:05:29
merci pour vos reponses,
en faite c est ceci
Citation : my $var = "Tess".'-\d{10}'.tsv; |
donc cela signifie qu on attend un nombre a 10 chiffre en Tess et .tsv ??
je me rends compte que le Perl, ça à l'air super puissant comme langage.
Vous auriez des liens html, avec des cours plus pousser parcequ apparamment les liens que je trouve c est de la doc pour debutant de chez debutant
Marsh Posté le 29-10-2008 à 18:05:55
donny3 a écrit : merci pour vos reponses,
|
Si $var est utilisée dans une expression reguliere, oui, sinon, il faut voir le code pour se faire une idée.
Il y a pas mal de bons livres ou de bonnes docs, mais elles sont essentiellement en anglais
Vous pouvez jeter un oeil a ceci: http://www-esbs.u-strasbg.fr/notes [...] maire.html et a ce cours: http://www.med.univ-rennes1.fr/~po [...] operl.html
A+,
Marsh Posté le 28-10-2008 à 22:14:27
salut,
j'essai de comprendre un code dans lequel j ai ceci
# imprime la liste des utilisateurs
open F, "< /etc/passwd" or die "Impossible d'ouvrir /etc/passwd : $!";
while (defined my $ligne = <F> ) {
next if $ligne =~ /^\s*(?:#|$)/;
$ligne =~ s/:.*//;
print $ligne;
}
close F;
lenext if signifie que si $ligne = /^\s*(?:#|$)/ alors on passe a la ligne suivant et on ne fait pas un print pour cette ligne??
dans le code j 'ai aussi des unpack??
est ce que cela parait d'extraire des element du chaine de caractere, de telle position a telle position ???
il utilise aussi tie devant des hash
vous me direz il y a google, mais la pluspart des explications sont en anglais
et j'ai pas tout tres bien capter
merci de votre aide