in reply to Help with getopt::long and GetOptionsFromArray

Others have provided solutions to your problem. I think it is worth explicitly stating that your problem has nothing to do with GetOptionsFromArray. The same problem exists with GetOptions. If you really don't need GetOptionsFromArray, your code can be simplified:
use strict; use warnings; use Data::Dumper; use Getopt::Long qw(GetOptions); use feature 'say'; my %query_params; print "perl args: ".Dumper( \@ARGV ); GetOptions ( \%query_params, 'timestamp=s' ); print "query_params: ".Dumper( \%query_params ); my $report_type = $ARGV[0]; say "timestamp = $query_params{timestamp}"; say "report type = $report_type"