#!/usr/bin/perl -w # "99 Bottles of Beer On The Wall" # Speaking version use strict; use Win32::OLE; my $voice; $voice = Win32::OLE->new("Speech.VoiceText") or die("TTS failed"); $voice->Register("", "$0"); $voice->{Enabled} = 1; $voice->{Speed}=150; my $b=shift; $b = $b + 1; main(); exit(); sub nl { print $/; } sub main{ my $a='onn the wall'; my $c="bottles of beer"; while (($b--)>1) { if ($b == 1) { $c="bottle of beer"; } talk("$b $c $a, $b $c"); talk("Take one down, pass it around."); my $tb = $b - 1; if ($tb == 1) { $c="bottle of beer"; } if ($tb == 0) { $c="bottles of beer"; } talk("$tb $c $a!"); nl(); } } sub talk{ my $line = shift; print $line,$/; $voice->Speak($line, 1); while ($voice->IsSpeaking()) { sleep 1; } }