Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

Perl Sings 99 Bottles of Beer On the Wall

by LostS (Friar)
on Feb 19, 2003 at 22:29 UTC ( #236856=CUFP: print w/replies, xml ) Need Help??

Don't ask where this came from but was sorta bored... The command is perl <number of bottles>

Now the code:
#!/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; } }
This is code I got from Mr. Muskrat and from the 99 Bottles Of Beer (can't we do better). Gees I was bored....

Billy S.
Slinar Hardtail - Hand of Dane
Datal Ephialtes - Guildless
RallosZek.Net Admin/WebMaster

perl -le '$cat = "cat"; if ($cat =~ /\143\x61\x74/) { print "Its a cat +!\n"; } else { print "Thats a dog\n"; }'

Replies are listed 'Best First'.
Re: Perl Sings 99 Bottles of Beer On the Wall
by zentara (Archbishop) on Feb 20, 2003 at 13:21 UTC
    Although not perl generated; if you want to hear a "realistic" computer generated vocal, check out this mp3 from the Flinger project. Frere Jacques

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: CUFP [id://236856]
Approved by Mr. Muskrat
Front-paged by ybiC
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (3)
As of 2018-01-20 06:26 GMT
Find Nodes?
    Voting Booth?
    How did you see in the new year?

    Results (226 votes). Check out past polls.