use strict; use warnings; use Win32::GUI(); use Win32; use Win32::FileOp qw(SaveAsDialog); my $startdir = 'C:\Users'; my $filename = Win32::GUI::GetOpenFileName( -title => 'Select a file', -directory => $startdir, -filter => ["Perl scripts (*.pl, *.pm)" => "*.pl;*.pm", "All files" => "*.*", ],); if ($filename) { my $returnvalue = Win32::MsgBox("Use $filename ?",4,"Use it?"); if ($returnvalue == 6){ Win32::MsgBox("Using $filename as input."); } else{ Win32::MsgBox("Not using $filename as input."); } print "--- $filename\n"; } else { print "\$filename was not chosen by Win32::GUI::GetOpenfilename\n"; exit; } my %parameters = ( title => "Output file", filters => {'Filter 1' => '*.txt;*.log', 'Filter 2' => '*.dat'}, filename => 'output.txt', ); my $output_file = SaveAsDialog %parameters , "output.txt"; if($output_file){ Win32::MsgBox("Using $output_file as output."); } else{ Win32::MsgBox("No output file chosen."); }