in reply to How do I use command line arguments?

Why do you have a random "%groupinfo"? That line should end with a semi-colon and start with a "my" keyword. my %groupinfo;

Secondly the only place you mention desc is in the body of the while loop, and it's a scalar. Why are you trying to print out a hash named desc later on?

 $desc = "foo"; Does not affect anything named %desc.

Where do you get the variable $line from? You don't declare it. You don't assign anything to it. You just made it up and hoped it worked?

Heres a rewrite that sucks slightly less:
#!/usr/bin/perl use strict; # or die my %groupinfo; open(IN, "groupinfo") or die "Can't open groupinfo: $!"; while( my $line = <IN> ) { my( $name, $desc ) = split/:/,$line; $groupinfo{$name} = $desc; } print %groupinfo;