use Win32::API; use Cwd; sub choose_dir { $SHBrowseForFolder=new Win32::API('shell32.dll','SHBrowseForFolder','P','N'); $SHGetPathFromIDList=new Win32::API('shell32.dll','SHGetPathFromIDList','NP','N'); my $display="CHOOSE starting directory..."; my $BrowseInfo=pack('LLLpLLLL',0,0,0,$display,0,0,0,0,0); my $pidl=$SHBrowseForFolder->Call($BrowseInfo); my $dir=pack('x100'); $SHGetPathFromIDList->Call($pidl,$dir); $dir =~ s/\0//g; chdir $dir; print "current dir: ",cwd(); } choose_dir;