> -----Original Message-----
> From: Jamie Risk [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, January 30, 2003 9:32 AM
> To: [EMAIL PROTECTED]
> Subject: creating hash from name/value found in file.
> 
> 
> Okay, it's 5:25pm and I started programming PERL shortly 
> after downloading
> the 5.8.0 tarballs at 2:30pm.
> I'd like to create a hash from a text file that has 
> name/value pairs, one
> per line. So far, I'm only capable of reading it in as a list 
> - this PERL
> stuff really seems easy - but can I (excuse the c lingo) 
> 'cast' or refer to
> my list (@desc) as a hash somehow?
> 

Firstly it's good practice to 'use strict;' in all scripts.


> I've got this so far:
> 
> vvvv
> #!/usr/bin/perl -w
> 
use strict;

my %pairs; # hash to store key/value pairs
my ($key, $value);

> if (0 > $#ARGV)
> {
>   print "Need a file (or files)  describing where to find states and
> stimuli.\n";
>   exit;
> }
> 
> foreach my $state_machine (@ARGV)
> {
>   chomp $state_machine;
>   print "Processing the file \"$state_machine\"\n";
>   open SM_FILE, $state_machine || die "can't open 
> \"$state_machine\": $!\n";
> 
>   while (<SM_FILE>)
>   {
>     chomp;
>     unshift (@desc, split);

# not sure what your delimeter is but say it is an equal sign
($key,$value) = split(/=/, $_);
$pairs{$key} = $value;

>   }
> 
[snipped now redundant section]
> 
>   close SM_FILE || die "this is wierd, can't close \"$state_machine\":
> $!\n";
> }
> ^^^^
> 
> The "foreach my $key(@desc)" I'd prefer to be something like:
> foreach my $key (sort(keys(%desc)))
> {
>   print $key,'=',$desc{$key};
> }
> 

while (($key,$value) = each %pairs)
{
        print "$key=$value\n";
}





-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to