#!/usr/bin/perl use strict; use warnings; use Getopt::Long(); sub usage { my $message = shift(@_); if (defined $message && length $message) { $message .= "\n" unless $message =~ /\n$/; } my $command = $0; $command =~ s#^.*/##; print STDERR ( $message, "usage: $command -f file(s).xls -p file.csv\n" ); die("\n") } my @xls; my $csv; print "This is the number of \@ARGV arguments before the process ".@ARGV."\n"; Getopt::Long::GetOptions( 'f=s{1,}' => sub { foreach $_ (@_) { print $_ . "\n"; /\.xls$/ or die ("Invalid format for option expected -f '*.xls'\n"); push(@xls,$_); } }, 'p=s' => sub { $_ = pop @_; /\.csv$/ or die ("Invalid format for option expected -p '*.csv'\n"); $csv = $_; } ) or usage("Invalid commmand line options."); usage("The '*.xls' file(s) needs to be specified.") if scalar (@xls == 0); usage("The '*.csv' file needs to be specified.") unless defined $csv; print "Input given form \@xls: ".@xls."\n"; print "Input given form \$csv: ".$csv."\n"; =test 'f=s{1,}' => sub { foreach $_ (@_) { print $_ . "\n"; /\.xls$/ or die ("Invalid format for option expected -p '*.xls'\n"); =cut