I played around with that before, but used Tk which has "an event loop" to make this sort of thing easier. POE might be able to help you on the command-line versions. In the sources for mpg123, there is a README.remote file, which describes how to remotely control the player. You will have to play your songs thru the "piped-form of open", rather than backticks, so you can signal the player to skip to the next songs. With bacticks, killing the song, will kill the instance of the player, so you will be creating a new player for each song....kind of wasteful. The following example, has a "Pause" Button, but you can skip to the next song in a playlist by just LOADING it.
#!/usr/bin/perl
use warnings;
use strict;
use Tk;
#read README.remote in mpg123 sources
$|++;
#my $pid = open(FH,"| mpg123 -R 2>&1 ");
my $pid = open(FH,"| mpg123 -R >/dev/null 2>&1 ");
print "$pid\n";
my $mw = new MainWindow;
my $startbut = $mw->Button(-text =>'Start Play',
-command => sub{
syswrite(FH, "LOAD 1bb.mp3\n") ;
})->pack;
my $pausebut = $mw->Button(-text =>'Pause',
-command => sub{
syswrite(FH, "PAUSE\n") ;
})->pack;
my $exitbut = $mw->Button(-text =>'Exit',
-command => sub{ exit })->pack;
MainLoop;
I'm not really a human, but I play one on earth.
flash japh