I don't know much about it, but
Prima may be worth a try. Here's an example from CPAN.
#!perl -w
use strict;
use warnings;
use Prima qw(Application);
use Prima::StdDlg;
my $open = Prima::OpenDialog-> new(
filter => [
['Perl scripts' => '*.pl'],
['All' => '*']
]
);
print $open-> fileName, " is to be opened\n" if $open-> execute;
# save a file
my $save = Prima::SaveDialog-> new(
fileName => $open-> fileName,
);
print $save-> fileName, " is to be saved\n" if $save-> execute;
# open several files
$open-> multiSelect(1);
print $open-> fileName, " are to be opened\n" if $open-> execute;