use strict; use warnings; # SoPW id: $|=1; use Data::Dump qw(pp); my $Registry; use Win32::TieRegistry 0.20 ( TiedRef => \$Registry, Delimiter => "/", ArrayValues => 1, SplitMultis => 1, AllowLoad => 1, qw( REG_SZ REG_EXPAND_SZ REG_DWORD REG_BINARY REG_MULTI_SZ KEY_READ KEY_WRITE KEY_ALL_ACCESS ), ); my $apps= $Registry->{"/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/App Paths/"} or die "Can't find the Windows Applications: $^E\n"; # Get list of subkey names: print "########################### Sub Key Names ###############\n\n"; my @subKeyNames = $apps->SubKeyNames; print "$_\n" for @subKeyNames; print "########################### Pretty Print Dump ###############\n\n"; pp \$apps; print "########################### foreach Printing Loop ###########\n\n"; foreach( keys %$apps ) { print "$_: ", $apps->{$_} // "undef", "\n"; } __END__ C:.......\PerlProjects\Monks>perl win32regManipulation.pl ########################### Sub Key Names ############### 7zFM.exe Acrobat.exe AcrobatInfo.exe Au3Info.exe Au3Info_x64.exe Aut2Exe.exe Aut2Exe_x64.exe AutoIt3.exe AutoIt3_x64.exe chrome.exe cmmgr32.exe devenv.exe dfshim.dll Escfg.exe escndv.exe excel.exe firefox.exe fsquirt.exe IEDIAG.EXE IEDIAGCMD.EXE IEXPLORE.EXE install.exe javaws.exe LGMobileDriver_WHQL_Ver_4.2.0.exe licensemanagershellext.exe Lync.exe MCUI32.exe mip.exe mplayer2.exe MSACCESS.EXE msedge.exe msoadfsb.exe msoasb.exe MsoHtmEd.exe msoxmled.exe MSPUB.EXE NAVW32.EXE OneNote.exe OUTLOOK.EXE pbrush.exe PowerDirector14 PowerDVD14 powerpnt.exe PowerShell.exe pwsh.exe SciTE.exe sdxhelper.exe setup.exe Skype.exe SKYPESERVER.EXE Snagit SnagIt32.exe SnippingTool.exe table30.exe TabTip.exe TextPad.Exe vlc.exe vstoee.dll wab.exe wabmig.exe waterfox.exe winget.exe Winword.exe Wireshark.exe wmplayer.exe WORDPAD.EXE WRITE.EXE