http://qs321.pair.com?node_id=567756
Category: Win32 stuff
Author/Contact Info Chris Monahan aka Maze ForeverWatcher@googlemail.com
Description: a simple listing script for associations on a win32 system like assoc for win 2000/XP except there isn't yet any functionality to change association Just list them...quite uselessly - just proof of concept
#perl-assoc 0.1
#by Chris Monahan + help from perl monks
#
#This is free software, you can distribute it under the same
#terms as perl itself
#
###    a simple listing script for associations on a win32 system    #
###    like assoc for win 2000/XP except there isn't                  
+           #
###    yet any functionality to change association                    
+                #
###    Just list them...            quite uselessly - just proof of co
+ncept#
use warnings;
use strict;
use Win32::TieRegistry (Delimiter => ":");
#use Data::Dumper;

my $class;
my $val;
my $key;
#my $error;

if (not defined($ARGV[0])){
     
    foreach $class (keys %{ $Registry->{"Classes:"} }){
        
        if ($class =~ /^[.]/) {
            my $RegHash = $Registry->{"Classes:$class"};
            
            #$error = Dumper %RegHash;
            while (my ($key, $val) = each(%$RegHash)){#or die "failure
+ to read registry: $! \nlast contents of Registry Hash = $error \n";
                 if ($key eq ":"){
                     print "$class \t = \t $val\n";
                     }
                 #else{
                #    warn "unable to recognise association for $class"
            #}
        }
    }
}
}
else {
    
    $class = $ARGV[0];
        
        if ($class =~ /^[.]/) {
            my $RegHash = $Registry->{"Classes:$class"};
            
            #$error = Dumper %RegHash;
            while (my ($key, $val) = each(%$RegHash)){#or die "failure
+ to read registry: $! \nlast contents of Registry Hash = $error \n";
                 if ($key eq ":"){
                     print "$class \t = \t $val\n";
                     }
                 #else{
                #    warn "unable to recognise association for $class"
            #}
        }
    }
}

#To-Do:
#everything
#use more sensible looping for listing - thank you ikegami
#enable formatting and verbose options
#enable changing types

## in the end possibly going into more advanced file type stuff
##