#!/usr/bin/env perl
# created on 2013-09-09

use warnings;
use strict;
use 5.010;

my @cmd = ( 'qstat', '-pri', '-xml', @ARGV );

open my $fh, '-|', @cmd or die "Can't open filehandle: $!";

my $data = do { local $/; <$fh> };
$fh->close;

use XML::LibXML;
my $doc = XML::LibXML->load_xml( string => $data );

say join("\t", qw/job_id queue_priority user_priority job_name user status start queue slots task_id/);
for my $n ( $doc->findnodes('/job_info/queue_info/job_list') ) {
  print_node_details($n);
}
for my $n ( $doc->findnodes('/job_info/job_info/job_list') ) {
  print_node_details($n);
}

sub print_node_details {
  my $n      = shift;
  my $jid    = $n->findvalue('./JB_job_number');
  my $jname  = $n->findvalue('./JB_name');
  my $jstate = $n->findvalue('./state');
  my $jprio  = $n->findvalue('./JAT_prio');
  my $uprio  = $n->findvalue('./JB_priority');
  my $jtasks = $n->findvalue('./tasks');
  my $jslots = $n->findvalue('./slots');
  my $juser  = $n->findvalue('./JB_owner');
  my $jqueue = $n->findvalue('./queue_name');
  $jqueue =~ s/\.local$//;
  my $jstart = $n->findvalue('./JAT_start_time') || $n->findvalue('./JB_submission_time');
  $jstart =~ s/T/ /;
  say join("\t", $jid, $jprio, $uprio, $jname, $juser, $jstate, $jstart, $jqueue, $jslots, $jtasks);
}
#2013-09-09T16:19:17
#job-ID  prior   name       user         state submit/start at     queue                          slots ja-task-ID
