Remplacer Sed et Awk par Ruby 3: BEGIN et END
Les blocs BEGIN et END du langage Ruby paraissent étranges pour beaucoup de personnes. Ils sont inutiles (et certainement néfastes) pour des programmes dit classiques. Ils peuvent être utiles pour un script. Il sont indispensables pour remplacer Sed et Awk et on va donc les regarder plus en détail.
Un exemple simple vaut mieux qu’un long discours:
[~]⇒ ruby test1.rb
avant
au milieu
après
BEGIN
est donc l’endroit où on initialisera les variables et END
permettra de faire les calculs et l’affichage en fin de traitement.
Il faut savoir qu’on peut avoir plusieurs blocs
BEGIN
et END
. Les blocs BEGIN
seront interprétés dans l’ordre
d’apparition, tandis que les blocs END
seront interprétés dans l’ordre
inverse d’apparition:
[~]⇒ ruby test2.rb
begin 1
begin 2
begin 3
end 3
end 2
end 1
Enfin, pour être exhaustif, on ne peut pas remplacer les {}
par do
et end
, comme on pourrait s’y attendre:
[~]⇒ ruby test3.rb
test3.rb:1: syntax error, unexpected keyword_do, expecting '{'
test3.rb:3: syntax error, unexpected keyword_end, expecting end-of-input
À demain.