#!/usr/bin/perl use strict; use warnings; use IO::Socket::INET; ### available commands my @commands = ( "status" ); my %connInfo; $connInfo{"host"} = "localhost"; $connInfo{"port"} = 6600; $connInfo{"pass"} = ""; sub mpdCommand { my $connInfo = shift; my $command = shift; my $connection = IO::Socket::INET->new( PeerAddr => $connInfo{"host"}, PeerPort => $connInfo{"port"} ) or die "Could not connect to host"; my ($char, $line, $lines); $char = ""; # Skip first "OK" sysread($connection, $char, 1) until $char eq "\n"; # Send command $connection->send($command . "\n"); my $eof = 0; do { $line = ''; while (sysread($connection, $char, 1) and $char ne "\n") { $line .= $char; } return $lines if $line eq "OK"; if ($line =~ m/^ACK \[(\d+)@(\d+)\] {(\w*)} (.*)/) { die $4; } $lines .= $line . "\n"; } while (1); close $connection; return $lines; } sub mpduniq { my @lines = split("\n", mpdCommand(shift, "playlist")); print shift @lines; } sub mpdstatus { my $conn = shift; my @lines = split("\n", mpdCommand($conn, "status")); } mpduniq;