Why not something like this?

my %hash;
while(<SM_FILE>){
  chomp $_;                        #remove the newline
  my($key,$value) = split(/,/,$_); #split by commas or whatever
  $hash{$key} = $value;            #assign the value here
}

foreach(sort keys %hash){
  print "$key => $value\n";
}


-----Original Message-----
From: Jamie Risk [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, January 29, 2003 2:32 PM
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?

I've got this so far:

vvvv
#!/usr/bin/perl -w

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);
  }

  foreach my $key (@desc)
  {
    print $key, "\n";
  }

  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};
}





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

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

Reply via email to