<?xml version="1.0" encoding="windows-1252"?>
<node id="17641" title="Answer: How do I make Open and Save As file dialogs? (Win32)" created="2000-06-11 22:17:13" updated="2005-08-10 09:46:34">
<type id="1888">
categorized answer</type>
<author id="11732">
QandAEditors</author>
<data>
<field name="doctext">
&lt;p&gt;
While I haven't any experience with [mod://Win32::GUI],
I've used [mod://Tk|Perl/Tk] successfully for this exact problem.
The key methods are 
[http://aspn.activestate.com/ASPN/docs/ActivePerl-5.6/site/lib/Tk/getOpenFile.html|getOpenFile]
and
[http://aspn.activestate.com/ASPN/docs/ActivePerl-5.6/site/lib/Tk/getOpenFile.html|getSaveFile]
 Here's a short example:
&lt;/p&gt;
&lt;CODE&gt;
#!/usr/bin/perl -w

use Tk 8.0;
use strict; 

my $mw = MainWindow-&gt;new( -title =&gt; 'File Test' );
my $menu_bar = $mw-&gt;Menu;
$mw-&gt;configure( -menu =&gt; $menu_bar );

my $file_mb = $menu_bar-&gt;cascade( -label =&gt; '~File', -tearoff =&gt; 0 );

$file_mb-&gt;command( -label =&gt; 'Open', -underline =&gt; 0, -command =&gt; \&amp;f_open );
$file_mb-&gt;command( -label =&gt; 'Save', -underline =&gt; 0, -command =&gt; \&amp;f_save );
$file_mb-&gt;separator;
$file_mb-&gt;command( -label =&gt; 'Exit', -underline =&gt; 1, -command =&gt; sub{exit} );

MainLoop;

sub f_open {
  my $filename = $mw-&gt;getOpenFile( -title =&gt; 'Open File:',
    -defaultextension =&gt; '.txt', -initialdir =&gt; '.' );
  ### do something with $filename
  warn "Opened $filename\n";
}

sub f_save {
  my $filename = $mw-&gt;getSaveFile( -title =&gt; 'Save File:',
    -defaultextension =&gt; '.txt', -initialdir =&gt; '.' );
  ### do something with $filename
  warn "Saved $filename\n";
}

#&lt;/CODE&gt;

&lt;p&gt;
Note that
[http://phaseit.net/claird/comp.lang.perl.tk/ptkFAQ.html#A16.2|Question 16.2. - Is there a file selector?]
of the (somewhat stale) Perl/Tk FAQ lists several alternatives.
Which, if any, of these is what got built into the Tk of ActiveState Perl, I don't know...
&lt;/p&gt;
</field>
<field name="parent_node">
15422</field>
</data>
</node>
