Hey all,
Well, the subject says it all.  Four days removed from a Perl class, and I
feel like I'm forgetting everything (guess that's what happens when you
don't take Randal's class ;p).
Anyway, here's what I'm trying to do.  I have a file that I'm reading into
the program with an open command.  Each line looks like the following:
305 = normal,noselector,password,1-999

What I'm trying to do is take the first three digits from each line, and
then use it as a key for a hash.  The value of each key will start out as
"Offline".  The problem is that I can't remember how to get the digits
into the hash as the key value.  Here's basically what I have so far:

open(FILE, "file") or die "Can't open file: $!\n";
while (<FILE>) { #I have <FILE> here instead of <> because I'll have
                        another filehandle once I get this working
        $item = /^\d{3}/; # Here's where I'm stuck
        $hash{$item} = "Offline";
}

I know the $item = etc line is wrong, but I can't think of what it should
be.  I don't want the entire line, just the three digits.

Also, the 3rd Edition of Learning Perl isn't out yet correct?  Someone
told me it was, but I didn't think it was.

Thanks,
Tom

-- 
#!/usr/bin/perl -w # 526-byte qrpff, Keith Winstein and Marc Horowitz
<[EMAIL PROTECTED]> # MPEG 2 PS VOB file on stdin -> descrambled output
on stdout # arguments: title key bytes in least to most-significant order
$_='while(read+STDIN,$_,2048){$a=29;$c=142;if((@a=unx"C*",$_)[20]&48){$h=5;
$_=unxb24,join"",@b=map{xB8,unxb8,chr($_^$a[--$h+84])}@ARGV;s/...$/1$&/;$d=
unxV,xb25,$_;$b=73;$e=256|(ord$b[4])<<9|ord$b[3];$d=$d>>8^($f=($t=255)&($d
>>12^$d>>4^$d^$d/8))<<17,$e=$e>>8^($t&($g=($q=$e>>14&7^$e)^$q*8^$q<<6))<<9
,$_=(map{$_%16or$t^=$c^=($m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;$t
^=(72,@z=(64,72,$a^=12*($_%16-2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]}(16..271))
[$_]^(($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]}print+x"C*",@a}';s/x/pack+/g;eval

Reply via email to