#!/opt/perl/bin/perl -w # # Simple Quake2 online game launcher script # use strict; $| = 1; $SIG{'PIPE'} = "IGNORE"; my $PAGER = ($ENV{'PAGER'} || "more"); my $Q2EXE = "sdlquake2"; my $Q2DIR = "/usr/home/mats/games/quake2"; my @l; open(PIPE, "qstat -raw '\t' -sort p -q2m satan.idsoftware.com |") or die "$!\n"; foreach () { chomp; $_ or next; my @r = split("\t"); push @l, \@r; } close(PIPE); while (1) { print "\033[H\033[2J"; open(PIPE, "| $PAGER") or die "Can't execute \`$PAGER': $!\n"; my $i = 1; foreach my $r (@l) { $r->[4] or next; printf PIPE "%4d: %-40.38s%-17.15s%8s%7s\n", $i++, $r->[2], $r->[3], "$r->[5]/$r->[4]", $r->[6]; } close(PIPE); print "\n Select: "; defined(my $tmp = ) or exit; chomp $tmp; ($tmp !~ /^[\d]+$/ or ($tmp < 1 || $tmp > scalar @l)) and do {print " Invalid response"; sleep 1; next}; print " Extra options: "; defined(my $opt = ) or exit; chomp $opt; my $r = $l[$tmp - 1]; system("cd $Q2DIR && $Q2EXE +connect $r->[1] $opt >/dev/console 2>&1"); } .