Equivalence Perl

Résolu/Fermé
Kharec Messages postés 4146 Date d'inscription dimanche 20 avril 2008 Statut Contributeur Dernière intervention 8 mai 2011 - 20 févr. 2009 à 16:51
Kharec Messages postés 4146 Date d'inscription dimanche 20 avril 2008 Statut Contributeur Dernière intervention 8 mai 2011 - 20 févr. 2009 à 17:45
Salut les amis!!

Voilà mon soucis. Je cherche l'équivalent en perl de la commande read en bash. Par exemple, comment écrire ce script ci en perl:
#! /bin/bash

read var    # C'est surtout ça dont je veux savoir la syntaxe PERL.

echo $var

exit

Je sais qu'il y aura print " $var "; et #! /usr/bin/perl , mais pour le read je bloque :-(

Merci à tous!!

4 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
20 févr. 2009 à 17:01
Salut,
lami20j@debian:~/trash/ccm_perl$ cat ccm_stdin.pl
#!/usr/bin/perl
use strict;use warnings;

print "Votre nom? ";
chomp(my $nom = <STDIN>);
print "Votre nom est $nom\n"; # sans l'utilisation de chomp
                              # pas besoin de \n
__END__
lami20j@debian:~/trash/ccm_perl$ perl ccm_stdin.pl
Votre nom? lami20j
Votre nom est lami20j
0
Kharec Messages postés 4146 Date d'inscription dimanche 20 avril 2008 Statut Contributeur Dernière intervention 8 mai 2011 509
20 févr. 2009 à 17:06
Ahhh j'ai compris!!!

Merci mille fois Lami20j =D
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
20 févr. 2009 à 17:26
Re,

En fait pour aller plus loin, il s'agit de l'opérateur <> qui permet de lire un handle de fichier (STDIN étant l'entrée standard)

Utilisant tout simplement <> on lit depuis les fichiers passés en arguments
lami20j@debian:~/trash/ccm_perl$ cat nom1.txt
kharec
lami20j@debian:~/trash/ccm_perl$ cat nom2.txt
lami20j
lami20j@debian:~/trash/ccm_perl$ cat ccm_stdin2.pl
#!/usr/bin/perl
use strict;use warnings;

print "Votre nom? \n";
chomp(my @nom = <>);# on utilise un tableau pour recuperer toutes les lignes
print "@nom\n";
__END__
lami20j@debian:~/trash/ccm_perl$ perl ccm_stdin2.pl nom1.txt
Votre nom?
kharec
lami20j@debian:~/trash/ccm_perl$ perl ccm_stdin2.pl nom2.txt
Votre nom?
lami20j
lami20j@debian:~/trash/ccm_perl$ perl ccm_stdin2.pl nom1.txt nom2.txt
Votre nom?
kharec lami20j
lami20j@debian:~/trash/ccm_perl$ perl ccm_stdin2.pl n*.txt
Votre nom?
kharec lami20j

Au lieu de STDIN un handle de fichier
lami20j@debian:~/trash/ccm_perl$ cat nom1.txt
kharec
lami20j@debian:~/trash/ccm_perl$ cat ccm_stdin3.pl
#!/usr/bin/perl
use strict;use warnings;

open F1,"nom1.txt" or die "E/S : $!\n";

print "Votre nom? \n";
my $nom = <F1>;
print "$nom";
close F1;
__END__
lami20j@debian:~/trash/ccm_perl$ perl ccm_stdin3.pl
Votre nom?
kharec
Ou le handle DATA
lami20j@debian:~/trash/ccm_perl$ cat ccm_stdin4.pl
#!/usr/bin/perl
use strict;use warnings;

print "Votre nom? \n";
my $nom = <DATA>;
print "$nom";
__END__
kharec
lami20j@debian:~/trash/ccm_perl$ perl ccm_stdin4.pl
Votre nom?
kharec

0
Kharec Messages postés 4146 Date d'inscription dimanche 20 avril 2008 Statut Contributeur Dernière intervention 8 mai 2011 509
20 févr. 2009 à 17:45
D'accord! Bien merci beaucoup! =)
0