Qui peut tester ma commande unix ?
Je l'ecris en perl
La derniere version est disponible
sur www.toolunix.com/test dans
le repertoire last-31-07-2003.
mettez la dans le repertoire
/usr/bin et tapez :
tlx --help
envoyez moi tous vos commentaires
sur la commande ou sur son code.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
root
On Thu, 31 Jul 2003 17:53:55 +0200, David C. wrote:
Qui peut tester ma commande unix ? Je l'ecris en perl La derniere version est disponible sur www.toolunix.com/test dans le repertoire last-31-07-2003. mettez la dans le repertoire /usr/bin et tapez : tlx --help envoyez moi tous vos commentaires sur la commande ou sur son code.
merci
$ perl tlx Use of uninitialized value in string eq at tlx line 21. Use of uninitialized value in string eq at tlx line 22. Use of uninitialized value in string eq at tlx line 23. Use of uninitialized value in string eq at tlx line 24. $
- si pas d'arguments, alors afficher l'aide ... - utilise Getopt::Std ou Getopt::Long pour traiter les arguments/options, peut être que dans ton cas c'est "pas vraiment utile" mais perso depuis que je l'utilise je me pose même pas la question de l'utilité, et je l'utilise direct pour tous mes scripts avec arguments/options :) - toujours vérifier les codes erreurs des open/opendir/etc. ... - heu ... ton truc, ça pourrais pas être fait tout simplement en utilisant File::Find ? - évite d'utiliser le open(F,">$f") mais utilise plutot la forme à 3 arguments open(F, ">", $f) ça évite les problèmes avec des fichiers qui seraient nommés '>toto' ...
Voilà voilà pour commencer ;)
On Thu, 31 Jul 2003 17:53:55 +0200, David C. wrote:
Qui peut tester ma commande unix ?
Je l'ecris en perl
La derniere version est disponible
sur www.toolunix.com/test dans
le repertoire last-31-07-2003.
mettez la dans le repertoire
/usr/bin et tapez :
tlx --help
envoyez moi tous vos commentaires
sur la commande ou sur son code.
merci
$ perl tlx
Use of uninitialized value in string eq at tlx line 21.
Use of uninitialized value in string eq at tlx line 22.
Use of uninitialized value in string eq at tlx line 23.
Use of uninitialized value in string eq at tlx line 24.
$
- si pas d'arguments, alors afficher l'aide ...
- utilise Getopt::Std ou Getopt::Long pour traiter les arguments/options,
peut être que dans ton cas c'est "pas vraiment utile" mais perso depuis
que je l'utilise je me pose même pas la question de l'utilité, et je
l'utilise direct pour tous mes scripts avec arguments/options :)
- toujours vérifier les codes erreurs des open/opendir/etc. ...
- heu ... ton truc, ça pourrais pas être fait tout simplement en utilisant
File::Find ?
- évite d'utiliser le open(F,">$f") mais utilise plutot la forme à 3
arguments open(F, ">", $f) ça évite les problèmes avec des fichiers qui
seraient nommés '>toto' ...
On Thu, 31 Jul 2003 17:53:55 +0200, David C. wrote:
Qui peut tester ma commande unix ? Je l'ecris en perl La derniere version est disponible sur www.toolunix.com/test dans le repertoire last-31-07-2003. mettez la dans le repertoire /usr/bin et tapez : tlx --help envoyez moi tous vos commentaires sur la commande ou sur son code.
merci
$ perl tlx Use of uninitialized value in string eq at tlx line 21. Use of uninitialized value in string eq at tlx line 22. Use of uninitialized value in string eq at tlx line 23. Use of uninitialized value in string eq at tlx line 24. $
- si pas d'arguments, alors afficher l'aide ... - utilise Getopt::Std ou Getopt::Long pour traiter les arguments/options, peut être que dans ton cas c'est "pas vraiment utile" mais perso depuis que je l'utilise je me pose même pas la question de l'utilité, et je l'utilise direct pour tous mes scripts avec arguments/options :) - toujours vérifier les codes erreurs des open/opendir/etc. ... - heu ... ton truc, ça pourrais pas être fait tout simplement en utilisant File::Find ? - évite d'utiliser le open(F,">$f") mais utilise plutot la forme à 3 arguments open(F, ">", $f) ça évite les problèmes avec des fichiers qui seraient nommés '>toto' ...
Voilà voilà pour commencer ;)
David C.
Mais que pensez vous en ce qui concerne la qualité de mon code ?
Mais que pensez vous en ce qui
concerne la qualité de mon code ?
Mais que pensez vous en ce qui concerne la qualité de mon code ?
root
On Thu, 31 Jul 2003 20:10:07 +0200, David C. wrote:
Mais que pensez vous en ce qui concerne la qualité de mon code ?
ça dépend de ce qu'on met dans "qualité" :)
Un code de "qualité" pour moi, serait un code simple, lisible, dont on comprend ce qu'il fait en parcourant rapidement son code, et utilisant a bon escient les particularités du langage pour simplifier certains traitements (et c'est peut être là le problème de Perl) ...
Ensuite pour la forme, on peux essayer de respecter le perlstyle :
$ perldoc perlstyle
Par exemple, tu pourrais utiliser des elsif plutôt que tes if successifs, puisqu'on ne peut pas faire un --listage et un --user en même temps :
Et comme on dit en Perl: TIMTOWTDI - "There Is More Than One Way To Do It" !
On Thu, 31 Jul 2003 20:10:07 +0200, David C. wrote:
Mais que pensez vous en ce qui
concerne la qualité de mon code ?
ça dépend de ce qu'on met dans "qualité" :)
Un code de "qualité" pour moi, serait un code simple, lisible, dont on
comprend ce qu'il fait en parcourant rapidement son code, et utilisant a
bon escient les particularités du langage pour simplifier certains
traitements (et c'est peut être là le problème de Perl) ...
Ensuite pour la forme, on peux essayer de respecter le perlstyle :
$ perldoc perlstyle
Par exemple, tu pourrais utiliser des elsif plutôt que tes if successifs,
puisqu'on ne peut pas faire un --listage et un --user en même temps :
On Thu, 31 Jul 2003 20:10:07 +0200, David C. wrote:
Mais que pensez vous en ce qui concerne la qualité de mon code ?
ça dépend de ce qu'on met dans "qualité" :)
Un code de "qualité" pour moi, serait un code simple, lisible, dont on comprend ce qu'il fait en parcourant rapidement son code, et utilisant a bon escient les particularités du langage pour simplifier certains traitements (et c'est peut être là le problème de Perl) ...
Ensuite pour la forme, on peux essayer de respecter le perlstyle :
$ perldoc perlstyle
Par exemple, tu pourrais utiliser des elsif plutôt que tes if successifs, puisqu'on ne peut pas faire un --listage et un --user en même temps :
help if (!defined($ARGV[1])); help if (!defined($ARGV[2]));
peut être remplacé par :
help if( not defined $ARGV[1] or not defined $ARGV[2] );
ou bien en comptant le nombre d'arguments :
help if( $#arguments < 2 );
C'est bien d'apprendre, mais ça ne veux pas dire ne pas apprendre à se servir de modules existants ... Par exemple, un bout de code en utilisant Getopt::Long :
use Getopt::Long;
my $login = undef; my $dir = undef; my $output = undef;
GetOptions( "user|u=s" => $login, "list|l=s" => $dir, "output|o=s" => $output, "help|h" => &help, # on execute directement help() si --help ) or help();
# on verifie qu'on utilise bien -u ou -l mais pas les deux # en même temps help() if( ! (not defined $user xor not defined $dir) );
# ouverture du fichier de sortie if( defined $output ) { open(OUTPUT, "> ", $output) or die "Error opening output file $output : $!n"; } else { # si pas de fichier alors on redirige vers STDOUT (voir typeglob) *OUTPUT = *STDOUT; }
if( defined $login ) { listuser($login); } elsif( defined $dir ) { listdir($dir); } else { print STDERR "Hey ! You are not supposed to be here !n"; help(); }
Pour moi, ça me parait plus clair comme ça, mais c'est un avis personnel ... ça simplifie la gestion des arguments, et on reste consistant avec le fonctionnement "standard" des outils sous Unix ...
Ensuite pour l'ouverture du fichier de sortie, on évite ainsi de devoir mettre un 'if( $arguments[0] ne "--lstdout" ) { } else { }' à chaque fois qu'on veut afficher qqe chose, il suffit d'utiliser simplement un 'print OUTPUT blah blah' et la sortie se fera automatiquement dans le fichier selectionné ou sur STDOUT.
Et puis on a tellement pas l'habitute de voir un 'xor' que je me suis senti obligé de poster ce bout de code ;)
Maintenant, comme on dit, c'est en forgeant qu'on devient forgeron ...
Bye
On Sat, 02 Aug 2003 10:30:21 +0200, David C. wrote:
J'ai modifié le code de la commande.
Il est disponible sur :
http://toolunix.com/test/last-02-08-2003/tlx
Vous en pensez quoi à présent ?
Quels sont les defauts ?
Je n'ai pas utilisé d'objets
car je cherche à m'entrainer sans.
David
Tu trouves pas qu'il y a qqe chose de redondant dans ce bout de code :
help if (!defined($ARGV[1]));
help if (!defined($ARGV[2]));
peut être remplacé par :
help if( not defined $ARGV[1] or not defined $ARGV[2] );
ou bien en comptant le nombre d'arguments :
help if( $#arguments < 2 );
C'est bien d'apprendre, mais ça ne veux pas dire ne pas apprendre à se
servir de modules existants ...
Par exemple, un bout de code en utilisant Getopt::Long :
use Getopt::Long;
my $login = undef;
my $dir = undef;
my $output = undef;
GetOptions(
"user|u=s" => $login,
"list|l=s" => $dir,
"output|o=s" => $output,
"help|h" => &help, # on execute directement help() si --help
) or help();
# on verifie qu'on utilise bien -u ou -l mais pas les deux
# en même temps
help() if( ! (not defined $user xor not defined $dir) );
# ouverture du fichier de sortie
if( defined $output ) {
open(OUTPUT, "> ", $output) or die "Error opening output file $output : $!n";
} else {
# si pas de fichier alors on redirige vers STDOUT (voir typeglob)
*OUTPUT = *STDOUT;
}
if( defined $login ) {
listuser($login);
} elsif( defined $dir ) {
listdir($dir);
} else {
print STDERR "Hey ! You are not supposed to be here !n";
help();
}
Pour moi, ça me parait plus clair comme ça, mais c'est un avis personnel
... ça simplifie la gestion des arguments, et on reste consistant avec le
fonctionnement "standard" des outils sous Unix ...
Ensuite pour l'ouverture du fichier de sortie, on évite ainsi de devoir
mettre un 'if( $arguments[0] ne "--lstdout" ) { } else { }' à chaque fois
qu'on veut afficher qqe chose, il suffit d'utiliser simplement un 'print
OUTPUT blah blah' et la sortie se fera automatiquement dans le fichier
selectionné ou sur STDOUT.
Et puis on a tellement pas l'habitute de voir un 'xor' que je me suis
senti obligé de poster ce bout de code ;)
Maintenant, comme on dit, c'est en forgeant qu'on devient forgeron ...
help if (!defined($ARGV[1])); help if (!defined($ARGV[2]));
peut être remplacé par :
help if( not defined $ARGV[1] or not defined $ARGV[2] );
ou bien en comptant le nombre d'arguments :
help if( $#arguments < 2 );
C'est bien d'apprendre, mais ça ne veux pas dire ne pas apprendre à se servir de modules existants ... Par exemple, un bout de code en utilisant Getopt::Long :
use Getopt::Long;
my $login = undef; my $dir = undef; my $output = undef;
GetOptions( "user|u=s" => $login, "list|l=s" => $dir, "output|o=s" => $output, "help|h" => &help, # on execute directement help() si --help ) or help();
# on verifie qu'on utilise bien -u ou -l mais pas les deux # en même temps help() if( ! (not defined $user xor not defined $dir) );
# ouverture du fichier de sortie if( defined $output ) { open(OUTPUT, "> ", $output) or die "Error opening output file $output : $!n"; } else { # si pas de fichier alors on redirige vers STDOUT (voir typeglob) *OUTPUT = *STDOUT; }
if( defined $login ) { listuser($login); } elsif( defined $dir ) { listdir($dir); } else { print STDERR "Hey ! You are not supposed to be here !n"; help(); }
Pour moi, ça me parait plus clair comme ça, mais c'est un avis personnel ... ça simplifie la gestion des arguments, et on reste consistant avec le fonctionnement "standard" des outils sous Unix ...
Ensuite pour l'ouverture du fichier de sortie, on évite ainsi de devoir mettre un 'if( $arguments[0] ne "--lstdout" ) { } else { }' à chaque fois qu'on veut afficher qqe chose, il suffit d'utiliser simplement un 'print OUTPUT blah blah' et la sortie se fera automatiquement dans le fichier selectionné ou sur STDOUT.
Et puis on a tellement pas l'habitute de voir un 'xor' que je me suis senti obligé de poster ce bout de code ;)
Maintenant, comme on dit, c'est en forgeant qu'on devient forgeron ...
Bye
Thierry Boudet
In article , root wrote:
Maintenant, comme on dit, c'est en forgeant qu'on devient forgeron ...
C'est en rootant que l'on devient rooté.
From: root
--
Peer-to-peer, c'est le sujet de ma thèse :) Donc c'est utile, et ca rapporte des diplômes. Et des sous. Ca rapporte une thèse ?
In article <pan.2003.08.02.10.57.37.545439@localhost.localdomain>, root wrote:
Maintenant, comme on dit, c'est en forgeant qu'on devient forgeron ...
C'est en rootant que l'on devient rooté.
From: root <root@localhost.localdomain>
--
Peer-to-peer, c'est le sujet de ma thèse :) Donc c'est utile, et ca
rapporte des diplômes. Et des sous.
Ca rapporte une thèse ?