Here's the code I came up with for testing whether the line read contains a
: (and thus makes it eligible for SPLITting).

#!/usr/bin/perl -w
$filename = "/home/ron/perl/cpu.txt";
$output = system("cat /proc/cpuinfo>$filename");
open(INFILE,"< $filename");
while (<INFILE>) {
        $linetest =$_;

        if ($linetest=~ m/:/){       #does the line have a : in it?  
        my ($key, $value) = split(/:/,$_);  #if it does, split it at the :
        print ("$key   \=\>      $value\n");  #print out the new values
        }
        # insert hash assignment code
}

>From here, if I knew how to do it, I'd assign $key and $value to a hash for
each line read in...
I messed with it a little but wasn't able to get it to work...  I tried this
(unsucessfully):
%myhash{$value=>$key};

I'm sure there is a better way to do this....

Ron 



-----Original Message-----
From: Anders Holm [mailto:[EMAIL PROTECTED]] 
Sent: Monday, April 29, 2002 9:16 AM
To: Michael Lamertz
Cc: beginners perl
Subject: RE: Getting contens of file into a hash


Thank you Micheal!!

Having loads of fun with this at the moment!! ;)

There seems to be another caveat as well, SMP systems. ;) Fortunate enough
to be able to test it on such a box at work.

So, input would be something of the following:

[anders@redhat anders]$ cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 8
model name      : Pentium III (Coppermine)
stepping        : 10
cpu MHz         : 997.497
cache size      : 256 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 mmx fxsr sse
bogomips        : 1992.29

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 8
model name      : Pentium III (Coppermine)
stepping        : 10
cpu MHz         : 997.497
cache size      : 256 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 mmx fxsr sse
bogomips        : 1992.29

[anders@redhat anders]$

There are now 2 empty lines that'd need to be stripped out, or I'll be
getting :

Use of uninitialized value in hash element at ./cpuinfo.pl line 27,
<CPUINFO> line 19. Use of uninitialized value in hash element at
../cpuinfo.pl line 27, <CPUINFO> line 19. Use of uninitialized value in hash
element at ./cpuinfo.pl line 27, <CPUINFO> line 38. Use of uninitialized
value in concatenation (.) at ./cpuinfo.pl line 33, <CPUINFO> line 38.

Line 19 & 38 are the empty lines. Shouldn't be too hard to fix this either..
I'll bounce my head on it and shout if I can't get it to work!! ;)

Cheers!!
Anders Holm

-----Original Message-----
From: Michael Lamertz [mailto:[EMAIL PROTECTED]]
Sent: 29 April 2002 13:29
To: Michael Lamertz
Cc: beginners perl; Anders Holm
Subject: Re: Getting contens of file into a hash


Whooops:

On Mon, Apr 29, 2002 at 02:12:27PM +0200, I wrote:
> On Mon, Apr 29, 2002 at 11:59:42AM +0100, Anders Holm wrote:
> > Hi folks!
> >
> You're right on track (with some exceptions, but read about that 
> further down the page).
>
>     my ($key, $value) = split /:/;

make that 'split /\s*:\s*/;'

> will give you e.g.
>     $key   "cpu family"
>     $value "6"

--
                       If we fail, we will lose the war.

Michael Lamertz                        |      +49 221 445420 / +49 171 6900
310
Nordstr. 49                            |
[EMAIL PROTECTED]
50733 Cologne                          |
http://www.lamertz.net
Germany                                |
http://www.perl-ronin.de

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