use v5.16; use XML::Simple; my $HOME = $ENV{HOMEPATH}; my $fn = "$HOME" . "\\documents\\output.txt"; open (my $out,">$fn") or die "$fn open failed for write $!"; my @fields = qw(name medium subject url); # read in the xml from file my $site_xml = XMLin( 'C:/Users/mark/Documents/sitesout.xml', forcearray => 1 ); # print a header for the output print($out, '-' x 70, "\n"); printf ($out,"%-35s%-15s%8s%8s\n", 'name', 'medium', 'subject', 'url' ); print($out, '-' x 70, "\n"); # fetch the data, dereferencing (probably incorrectly) for my $site ( @{ $site_xml->{site} } ) { # try to print to a file printf ($out, "%-35s", $site->{ ( $fields[0] ) }->[0] ); printf ($out, "%-15s", $site->{ ( $fields[1] ) }->[0] ); printf($out, "%8s", $site->{ ( $fields[2] ) }->[0] ); printf($out, "%8s\n", $site->{ ( $fields[3] ) }->[0] ); #print to standard output #printf ("%-35s", $site->{ ( $fields[0] ) }->[0] ); #printf ("%-15s", $site->{ ( $fields[1] ) }->[0] ); #printf("%8s", $site->{ ( $fields[2] ) }->[0] ); #printf("%8s\n", $site->{ ( $fields[3] ) }->[0] ); } close $out;