#!/usr/bin/env perl #=============================================================================== # # FILE: show_metadata # # USAGE: ./show_metadata # # DESCRIPTION: Script to display a file of metadata in a readable format # # OPTIONS: --- # REQUIREMENTS: --- # BUGS: --- # NOTES: --- # AUTHOR: Dave Morriss (djm), Dave.Morriss@gmail.com # VERSION: 0.0.2 # CREATED: 2014-06-09 16:17:11 # REVISION: 2014-06-15 12:26:58 # #=============================================================================== use 5.010; use strict; use warnings; use utf8; use List::Util qw{max}; use Text::CSV_XS; # # Version number (manually incremented) # our $VERSION = '0.0.2'; # # Script name # ( my $PROG = $0 ) =~ s|.*/||mx; # # Enable Unicode mode # binmode STDOUT, ":encoding(UTF-8)"; binmode STDERR, ":encoding(UTF-8)"; my $mdata = shift; die "Usage: $PROG filename\n" unless $mdata; die "File $mdata does not exist\n" unless -e $mdata; my $csv = Text::CSV_XS->new({ binary => 1 }); open( my $fh, "<:encoding(utf8)", $mdata ) or die "Unable to open $mdata: $!\n"; my @cols = @{ $csv->getline($fh) }; my $max = max map { length($_) } @cols; my $row = {}; $csv->bind_columns( \@{$row}{@cols} ); while ( $csv->getline($fh) ) { foreach my $key (@cols) { printf "%*s: %s\n", $max, $key, $row->{$key}; } print '-' x 80, "\n"; } close($fh); exit; # vim: syntax=perl:ts=8:sw=4:et:ai:tw=78:fo=tcrqn21:fdm=marker