Listing 4. mp3_send.pl An IP Telephone in 74 Lines of PERL
The Perl Journal, Fall 2000
 

mp3_send.pl initiates MP3-encoded telephone calls.

 0    #!/usr/bin/perl
 1    # file mp3_send.pl

 2    use strict;
 3    use DSP;
 4    use IO::Socket;

 5    use constant BUFSIZE => 1024;
 6    $SIG{CHLD} = sub { exit 0 };

 7    my $dest = shift || 'prego';
 8    my $port = shift || 2007;
 9    my $sock = IO::Socket::INET->new("$dest:$port") 
        || die "Can't connect: $!";
 10   my $dsp = new DSP;

 11   my $child = fork();
 12   die "Can't fork: $!" unless defined $child;

 13   my $data;
 14   if ($child) { # parent process
 15       my $uncompress = $dsp->uncompress;
 16       print $uncompress $data while sysread($sock, $data, BUFSIZE);
 17       kill TERM => $child;
 18   } else {
 19       my $compress = $dsp->compress;
 20       print $sock $data while sysread($compress, $data, BUFSIZE);
 21   }