Image-ExifTool
view release on metacpan or search on metacpan
# check for alternative if primary not available
$ver = eval "require $alt and \$${alt}::VERSION" and $_ = $alt if not $ver and $alt;
printf " %-28s %s\n", $_, $ver || '(not installed)';
}
if ($verbose > 1) {
print "Include directories:\n";
ref $_ or print " $_\n" foreach @INC;
}
} else {
print "$version$str$Image::ExifTool::RELEASE\n";
}
$helped = 1;
next;
}
if (/^(all|add)?tagsfromfile(=.*)?$/i) {
$setTagsFile = $2 ? substr($2,1) : (@ARGV ? shift : '');
if ($setTagsFile eq '') {
Error("File must be specified for -tagsFromFile option\n");
$badCmd = 1;
next;
}
# create necessary lists, etc for this new -tagsFromFile file
AddSetTagsFile($setTagsFile, { Replace => ($1 and lc($1) eq 'add') ? 0 : 1 } );
$tagsFrom = 'File';
next;
}
if ($a eq '@') {
my $argFile = shift or Error("Expecting filename for -\@ option\n"), $badCmd=1, next;
# switch to new ARGFILE if using chained -stay_open options
if ($stayOpen == 1) {
# defer remaining arguments until we close this argfile
@moreArgs = @ARGV;
undef @ARGV;
} elsif ($stayOpen == 3) {
if ($stayOpenFile and $stayOpenFile ne '-' and $argFile eq $stayOpenFile) {
# don't allow user to switch to the same -stay_open argfile
# because it will result in endless recursion
$stayOpen = 2;
Warn "Ignoring request to switch to the same -stay_open ARGFILE ($argFile)\n";
next;
}
close STAYOPEN;
$stayOpen = 1; # switch to this -stay_open file
}
my $fp = ($stayOpen == 1 ? \*STAYOPEN : \*ARGFILE);
unless ($mt->Open($fp, $argFile)) {
unless ($argFile !~ /^\// and $mt->Open($fp, "$Image::ExifTool::exeDir/$argFile")) {
Error "Error opening arg file $argFile\n";
$badCmd = 1;
next
}
}
if ($stayOpen == 1) {
$stayOpenFile = $argFile; # remember the name of the file we have open
$stayOpenBuff = ''; # initialize buffer for reading this file
$stayOpen = 2;
$helped = 1;
ReadStayOpen(\@ARGV);
next;
}
my (@newArgs, $didBOM);
foreach (<ARGFILE>) {
# filter Byte Order Mark if it exists from start of UTF-8 text file
unless ($didBOM) {
s/^\xef\xbb\xbf//;
$didBOM = 1;
}
$_ = FilterArgfileLine($_);
push @newArgs, $_ if defined $_;
}
close ARGFILE;
unshift @ARGV, @newArgs;
next;
}
/^(-?)(a|duplicates)$/i and $mt->Options(Duplicates => ($1 ? 0 : 1)), next;
if ($a eq 'api') {
my $opt = shift;
if (defined $opt and length $opt) {
my $val = ($opt =~ s/=(.*)//s) ? $1 : 1;
# empty string means an undefined value unless ^= is used
$val = undef unless $opt =~ s/\^$// or length $val;
$mt->Options($opt => $val);
} else {
unless ($pass) {
push @nextPass, '-api';
push @nextPass, $opt if defined $opt;
next;
}
print "Available API Options:\n";
my $availableOptions = Image::ExifTool::AvailableOptions();
$$_[3] or printf(" %-17s - %s\n", $$_[0], $$_[2]) foreach @$availableOptions;
$helped = 1;
}
next;
}
/^arg(s|format)$/i and $argFormat = 1, next;
if (/^(-?)b(inary)?$/i) {
($binaryOutput, $noBinary) = $1 ? (undef, 1) : (1, undef);
$mt->Options(Binary => $binaryOutput, NoPDFList => $binaryOutput);
next;
}
if (/^c(oordFormat)?$/i) {
my $fmt = shift;
$fmt or Error("Expecting coordinate format for -c option\n"), $badCmd=1, next;
$mt->Options('CoordFormat', $fmt);
next;
}
if ($a eq 'charset') {
my $charset = (@ARGV and $ARGV[0] !~ /^(-|\xe2\x88\x92)/) ? shift : undef;
if (not $charset) {
unless ($pass) {
push @nextPass, '-charset' ;
push @nextPass, $charset if defined $charset;
next;
}
my %charsets;
$charsets{$_} = 1 foreach values %Image::ExifTool::charsetName;
PrintTagList('Available character sets', sort keys %charsets);
$helped = 1;
} elsif ($charset !~ s/^(\w+)=// or lc($1) eq 'exiftool') {
{
local $SIG{'__WARN__'} = sub { $evalWarning = $_[0] };
undef $evalWarning;
$mt->Options(Charset => $charset);
}
if ($evalWarning) {
( run in 0.703 second using v1.01-cache-2.11-cpan-39bf76dae61 )