Je veux faire face à l’entrée de la ligne de commande en Ruby :
Quelle est la meilleure façon de le faire ? En particulier je veux traiter STDIN vide, et j’espère que pour une solution élégante.
Je veux faire face à l’entrée de la ligne de commande en Ruby :
Quelle est la meilleure façon de le faire ? En particulier je veux traiter STDIN vide, et j’espère que pour une solution élégante.
Ce sont juste des choses que j'ai trouvé dans ma collection d'obscurs Ruby.
Donc, en Ruby, un simple non-cloches de la mise en œuvre de la commande Unix cat
serait:
#!/usr/bin/env ruby
puts ARGF.read
ARGF
est votre ami quand il s'agit de l'entrée; c'est un fichier virtuel qui obtient toutes les entrées dans les fichiers nommés ou tous à partir de STDIN.
ARGF.each_with_index do |line, idx|
print ARGF.filename, ":", idx, ";", line
end
# print all the lines in every file passed via command line that contains login
ARGF.each do |line|
puts line if line =~ /login/
end
Dieu merci, nous n'avons pas le diamant de l'opérateur en Ruby, mais nous avons obtenu ARGF
comme un remplacement. Si obscures, il s'avère être utile. Considérons ce programme, qui ajoute le droit d'auteur en-têtes en place (grâce à un autre Perlism, -i
) de tous les fichiers mentionnés sur la ligne de commande:
#!/usr/bin/env ruby -i
Header = DATA.read
ARGF.each_line do |e|
puts Header if ARGF.pos - e.length == 0
puts e
end
__END__
#--
# Copyright (C) 2007 Fancypants, Inc.
#++
Crédit:
Je ne suis pas sûr de ce dont vous avez besoin, mais je voudrais utiliser quelque chose comme ceci :
Notez que parce que le tableau ARGV est vide avant le premier `` , Ruby n’essaierai pas d’interpréter l’argument en tant que fichier texte permettant de lire (comportement hérité de Perl).
Si stdin est vide ou il n’y a pas d’arguments, rien n’est imprimé.
Quelques cas de test :
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.