$bottles =42; @o=( "Take one ". "down, pass ". "it around ", "\n"); $wall="1 ". "bottles of rum 2\n"; sub r {print @_}; sub rum{$_=$wall; s/(\d)/$_[$1-1]/g;s/s//s unless $_[0]-1; print;}; do{rum$bottles,"on the " ."wall";rum$bottles;r(@o );$bottles--;rum$bottles if$bottles;print @o[-1]; }while $bottles; ; r;__DATA__ bottles No more rum ...