voila le deuxieme script
le script
#! /usr/bin/perl -w
system("clear");
foreach (@ARGV) {
$var.=$_;
Version imprimable
voila le deuxieme script
le script
#! /usr/bin/perl -w
system("clear");
foreach (@ARGV) {
$var.=$_;
Une abomination... Aucune application ne devrait tenter de deviner ce que le shell a fait avec ses arguments. Quand j'écris * dans le shell je m'attends à ce que le programme reçoive une liste de fichier, si je veux qu'il reçoive juste "*", je peux écrire '*' ou \* !Code:
1
2
3
4 ######## traitement du cas multiplication (*) ####### $chaine=`ls `; $chaine=~ s/[\s]+//g; $var=~ s/$chaine/*/;
Sans parler du fait que ton "truc" est éminemment non portable.
--
Jedaï
Merci pour votre aide c resolu
J'ai bien compris ce que tu voulais faire... Je te rappelle que la première fois que tu as posé cette question je t'avais donné un script qui faisait plus de chose que le tien, en bien moins de lignes.Citation:
Envoyé par theblow_wind
Code:
1
2
3
4
5
6
7
8
9
10
11 #! /usr/bin/env perl use strict; use warnings; my $expr = join ' ', @ARGV; if( $expr =~ m{^[ \d\.+-/*()]*$} ) { print eval $expr; } else { warn "Caractères interdits dans les arguments !"; } __END__
C'est un script Perl oui, mais tu l'utilise dans un shell, n'est-ce pas ? Donc il devrait respecter le shell et ne pas tenter d'être plus malin que lui dans sa prise en charge des arguments en ligne de commande. Si quelqu'un veut calculer -9 * 3 + 4, il n'a qu'à utiliser ./tonscript '-9 * 3 + 4' . (d'ailleurs ton script ne sait pas calculer les opérations à trois opérandes...).Citation:
c un script perl et non shell ensuite le probleme dans mon script c que le signe * signifie le repertoire courant alors que je doit l'utiliser comme opernad de calcul. exmple ./monscript -9 * 3 + 4
--
Jedaï
encore merci bqc Mr jedaï.