comment faire pour demander puis récupérer la saisie de mon clavier pour utilisé ce paramètre dans mon script ?
:?:?:?
Version imprimable
comment faire pour demander puis récupérer la saisie de mon clavier pour utilisé ce paramètre dans mon script ?
:?:?:?
Code:chomp($saisie = <STDIN>);
La réponse de philou est celle utilisée à 99%.
En complément, si tu as besoin de faire quelque chose de plus évolué, regarde ceci.
Il existe aussi un module de saisie de mot de passe : Term::ReadPassword
Autre question, j ai cru que ca marche mais
le prog ca marche mais j ais pas mon fichier de sortie ????Code:
1
2
3 chomp($saisie = <STDIN>); open(FILE2, ">>${saisie}.txt")|| die "Erreur E/S:$!\n"; ### fichier de sortie
Dans ce contexte, il est souvent souhaitable d'accepter ce genre de paramètre, aussi par ligne de commande (soit en utilisant directement @ARGV, soit en utilisant un module de gestion des options de lancement comme Getopt::Long).
Exemple avec perl 5.10 minimum:
Ton script se tue avec le message d'erreur du die ?Code:
1
2
3
4 use 5.10.0; chomp(my $in_file = $ARGV[0] // <STDIN>); chomp(my $out_file = $ARGV[1] // <STDIN>);
Le souci dans la récupération des fichiers en argument est la gestion des espaces dans les chemins, la conversion des backslash en slash, etc. Le plus propre est d'utiliser les arguments à la linux. Voici un exemple de programme :
Pour appeler ton programme, tu ferasCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #!/usr/bin/perl use strict; use warnings; use Getopt::Long; my ( $fichier_in, $fichier_out ) = (); GetOptions( 'in=s' => \$fichier_in, 'out=s' => \$fichier_out, ); unless ( defined $fichier_in and defined $fichier_out ) { print "USAGE : $0 -in fichier_entree -out fichier_sorti\n"; } print "entree : $fichier_in\n"; print "Sorti : $fichier_out\n";
Explication : Comment récupérer proprement les arguments de la ligne de commande ?Citation:
prog.pl -in "C:/fichier.txt" -out "C:/Program Files/tutu.txt"
est ce que je dois ajouter le module Getopt ??
Non, le module Getopt::Long, et seulement si tu utilises la solution proposée par djibril :)
c a d
:?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 use strict; use warnings; use Getopt::Long; my ( $fichier_in, $fichier_out ) = (); GetOptions( 'in=s' => \$fichier_in, 'out=s' => \$fichier_out, ); unless ( defined $fichier_in and defined $fichier_out ) { print "USAGE : $0 -in fichier_entree -out fichier_sorti\n"; } open(FILE2, ">>$fichier_out")|| die "Erreur E/S:$!\n";