Perl : inclusion de awk
Résolu
artagon7
Messages postés
417
Date d'inscription
Statut
Membre
Dernière intervention
-
artagon7 Messages postés 417 Date d'inscription Statut Membre Dernière intervention -
artagon7 Messages postés 417 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je veux ecrire un script Perl qui liste les fichiers contenus dans un repertoire avec seulement trois champs. Mais ca ne fonctionne pas.
Si j'execute le script suivant, ca fonctionne (il liste tous les champs):
Script 1:
#!/usr/bin/perl
my $rep = "/media/sda5/Informatique/Test/Test_1";
chdir $rep;
my @ls = qx{ls -l $rep};
print "@ls\n";
-------------------------------------------------------------------------------------
Si je rajoute la commande awk, il y a une erreur qui apparait.
Script 2 :
#!/usr/bin/perl
my $rep = "/media/sda5/Informatique/Test/Test_1";
chdir $rep;
my @ls = qx{ls -l $rep | awk '{ print $5,$6,$8 }'};
print "@ls\n";
Resultat :
awk: line 1: syntax error at or near ,
Ou est le probleme?
Merci
Je veux ecrire un script Perl qui liste les fichiers contenus dans un repertoire avec seulement trois champs. Mais ca ne fonctionne pas.
Si j'execute le script suivant, ca fonctionne (il liste tous les champs):
Script 1:
#!/usr/bin/perl
my $rep = "/media/sda5/Informatique/Test/Test_1";
chdir $rep;
my @ls = qx{ls -l $rep};
print "@ls\n";
-------------------------------------------------------------------------------------
Si je rajoute la commande awk, il y a une erreur qui apparait.
Script 2 :
#!/usr/bin/perl
my $rep = "/media/sda5/Informatique/Test/Test_1";
chdir $rep;
my @ls = qx{ls -l $rep | awk '{ print $5,$6,$8 }'};
print "@ls\n";
Resultat :
awk: line 1: syntax error at or near ,
Ou est le probleme?
Merci
A voir également:
- Perl : inclusion de awk
- Denon perl pro test - Accueil - Audio
- Active perl - Télécharger - Édition & Programmation
- DzSoft Perl Editor - Télécharger - Édition & Programmation
- Comment lire un fichier .pl perl ? - Forum Windows
- Perl: transformer un fichier en package ✓ - Forum Perl
14 réponses
les variables awk sont prises pour des variables perl, et comme ça ? my @ls = qx{ls -l $rep | awk '{ print \$5,\$6,\$8 }'};
Merci dubcek, je vais essayer cela dans les prochains jours. Trop occupé pour le moment... et pas chez-moi! Je t'en redonne des nouvelles.
Merci. :-)
Merci. :-)
Salut,
pourquoi pas en Perl (vous que tu veux apprendre ;-)
pourquoi pas en Perl (vous que tu veux apprendre ;-)
lami20j@debserv:~/trash$ cat artagon.pl #!/usr/bin/perl use strict;use warnings; my $rep="/home/lami20j/trash/c_exercices"; opendir REP,"c_exercices" or die "E/S :$!\n"; while(my $fic = readdir(REP)){ next if $fic=~/^\.\.?$/; my @stat = (stat("$rep/$fic"))[7,9]; my ($j,$m,$a) = (localtime($stat[1]))[3..5]; printf "$stat[0] %04d-%02d-%02d $fic\n",$a+1900,$m+1,$j; } __END__ lami20j@debserv:~/trash$ perl artagon.pl 4096 2008-02-10 3 543 2008-02-10 functions_date.c lami20j@debserv:~/trash$et voici le résultat de la commande awk
lami20j@debserv:~/trash$ ls -l c_exercices/| awk '{ print $5,$6,$8 }' 4096 2008-02-10 3 543 2008-02-10 functions_date.c
Bonjour,
Finalement, je peux vous repondre ...trois jours apres. Excusez-moi du retard.
Premierement, dubcek ta commande marche tres bien.
Quant a toi, lami20j, tu as monte le degre de difficulte d'une coche (plutot de deux ... :-) ). Cependant, dans mon cas ca n'a pas fonctionne. Je n'ai change que le repertoire. Voici le fichier :
/Perl$ cat lami20j_3_champs.pl
#!/usr/bin/perl
use strict;use warnings;
my $rep="/media/sda5/Informatique/Test/Test_1";
opendir REP,"Test_1"
or die "E/S :$!\n";
while(my $fic = readdir(REP)){
next if $fic=~/^\.\.?$/;
my @stat = (stat("$rep/$fic"))[7,9];
my ($j,$m,$a) = (localtime($stat[1]))[3..5];
printf "$stat[0] %04d-%02d-%02d $fic\n",$a+1900,$m+1,$j;
}
__END__
et le resultat :
/Perl$ perl lami20j_3_champs.pl
E/S :No such file or directory
Le repertoire /media/sda5/Informatique/Test/Test_1 existe bel et bien.
Il va falloir que j'y aille bientot. Encore une fois...
Eh lami20j, est-ce que tu connais un operateur dans Perl qui allonge les journees de 6 heures. Je pourrais les consacrer a Perl ...
Merci a vous deux,
Finalement, je peux vous repondre ...trois jours apres. Excusez-moi du retard.
Premierement, dubcek ta commande marche tres bien.
Quant a toi, lami20j, tu as monte le degre de difficulte d'une coche (plutot de deux ... :-) ). Cependant, dans mon cas ca n'a pas fonctionne. Je n'ai change que le repertoire. Voici le fichier :
/Perl$ cat lami20j_3_champs.pl
#!/usr/bin/perl
use strict;use warnings;
my $rep="/media/sda5/Informatique/Test/Test_1";
opendir REP,"Test_1"
or die "E/S :$!\n";
while(my $fic = readdir(REP)){
next if $fic=~/^\.\.?$/;
my @stat = (stat("$rep/$fic"))[7,9];
my ($j,$m,$a) = (localtime($stat[1]))[3..5];
printf "$stat[0] %04d-%02d-%02d $fic\n",$a+1900,$m+1,$j;
}
__END__
et le resultat :
/Perl$ perl lami20j_3_champs.pl
E/S :No such file or directory
Le repertoire /media/sda5/Informatique/Test/Test_1 existe bel et bien.
Il va falloir que j'y aille bientot. Encore une fois...
Eh lami20j, est-ce que tu connais un operateur dans Perl qui allonge les journees de 6 heures. Je pourrais les consacrer a Perl ...
Merci a vous deux,
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
Le repertoire /media/sda5/Informatique/Test/Test_1 existe bel et bien.
je n'ai pas dit le contraire ;-)
essaie
Le repertoire /media/sda5/Informatique/Test/Test_1 existe bel et bien.
je n'ai pas dit le contraire ;-)
essaie
#!/usr/bin/perl use strict;use warnings; my $rep="/media/sda5/Informatique/Test"; opendir REP,"Test_1" or die "E/S :$!\n"; while(my $fic = readdir(REP)){ next if $fic=~/^\.\.?$/; my @stat = (stat("$rep/$fic"))[7,9]; my ($j,$m,$a) = (localtime($stat[1]))[3..5]; printf "$stat[0] %04d-%02d-%02d $fic\n",$a+1900,$m+1,$j; } __END__
Non lami20j. ca ne fonctionne pas non plus.
A propos del'operateur : les journees ont 24 heures. Est-ce que tu connais un operateur de Perl qui les allongeraient jusqu'a 30 heures... il ne faut pas me prendre toujours au serieux ... ;-)
Je dois quitter pour aller travailler.
Je vais regarder ta reponse demain si possible
Salut et merci,
A propos del'operateur : les journees ont 24 heures. Est-ce que tu connais un operateur de Perl qui les allongeraient jusqu'a 30 heures... il ne faut pas me prendre toujours au serieux ... ;-)
Je dois quitter pour aller travailler.
Je vais regarder ta reponse demain si possible
Salut et merci,
alors affiche le résultat de
#!/usr/bin/perl use strict;use warnings; my $rep="/media/sda5/Informatique/Test"; opendir REP,"Test_1" or die "E/S :$!\n"; while(my $fic = readdir(REP)){ next if $fic=~/^\.\.?$/; print "$rep/$fic\n"; #my @stat = (stat("$rep/$fic"))[7,9]; #my ($j,$m,$a) = (localtime($stat[1]))[3..5]; #printf "$stat[0] %04d-%02d-%02d $fic\n",$a+1900,$m+1,$j; } __END__
Salut lami20j,
J'ai essaye ton script soit :
#!/usr/bin/perl
use strict;use warnings;
my $rep="/media/sda5/Informatique/Test";
opendir REP,"Test_1"
or die "E/S :$!\n";
while(my $fic = readdir(REP)){
next if $fic=~/^\.\.?$/;
print "$rep/$fic\n";
}
__END__
et ca donne toujours le meme resultat, soit E/S :No such file or directory.
J'ai observe que le mot REP apparait en noir ordinaire. Habituellement, Kate colorie les caracteres qui font partie d'un mot cle ou d'une variable. Par exemple, dans ton script print est en bleu, my en noir fonce, or en vert, $rep en brun. Ce n'est pas le cas ici. En principe, ca devrait ...
Donc, je crois que Perl ne reconnait pas REP. Est-ce que REP est-un mot cle du langage ou une variable? Tu as defini $rep et non $REP.
Merci, Aujourd'hui, j'ai finalement du temps ... :-)
J'ai essaye ton script soit :
#!/usr/bin/perl
use strict;use warnings;
my $rep="/media/sda5/Informatique/Test";
opendir REP,"Test_1"
or die "E/S :$!\n";
while(my $fic = readdir(REP)){
next if $fic=~/^\.\.?$/;
print "$rep/$fic\n";
}
__END__
et ca donne toujours le meme resultat, soit E/S :No such file or directory.
J'ai observe que le mot REP apparait en noir ordinaire. Habituellement, Kate colorie les caracteres qui font partie d'un mot cle ou d'une variable. Par exemple, dans ton script print est en bleu, my en noir fonce, or en vert, $rep en brun. Ce n'est pas le cas ici. En principe, ca devrait ...
Donc, je crois que Perl ne reconnait pas REP. Est-ce que REP est-un mot cle du langage ou une variable? Tu as defini $rep et non $REP.
Merci, Aujourd'hui, j'ai finalement du temps ... :-)
Salut,
essaie
REP et $rep ne se réfère pas à la même chose ;-)
essaie
#!/usr/bin/perl use strict;use warnings; my $rep="/media/sda5/Informatique/Test"; opendir REP,"Test" or die "E/S :$!\n"; while(my $fic = readdir(REP)){ next if $fic=~/^\.\.?$/; print "$rep/$fic\n"; } __END__
REP et $rep ne se réfère pas à la même chose ;-)
en fait je pense qu'à l'exécution de script tu n'est pas dans
/media/sda5/Informatique/Test
donc essaie
/media/sda5/Informatique/Test
donc essaie
#!/usr/bin/perl use strict;use warnings; my $rep="/media/sda5/Informatique/Test"; opendir REP,"$rep" or die "E/S :$!\n"; while(my $fic = readdir(REP)){ next if $fic=~/^\.\.?$/; print "$rep/$fic\n"; } __END__