another perl question


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting another perl question
# 1  
Old 07-19-2007
another perl question

I have a question regarding bulding a hash from a file which has below pattern

I thought I could write something like this but clearly my syntax is way off

Code:
$/ = "\n\n";
$" = "\n";

open(FILE, file1) || die;

my %keymaster = ( );

while (<FILE>) {
     my $topinfo =~ m/^(yahoo).+\$1/;
     my $key1 =~ m/^keyinfo.+$/;
     ($keyinfo, $topinfo) = split;
     push(@{$keymaster{$keyinfo}}, $topinfo);
}

I am trying to come up with something like this when I dereference it,

keyinfo 1 yahoo yahoo1 yahoo2
keyinfo 2 yahoo yahoo yahoo
keyinfo 5 yahoo1 yahoo1 yahoo

but I am not sure about my syntax...

thanks for any help~ or pointers


-----------------file1----------------------
yahoo 123123123
somwething
something
keyinfo
something

yahoo1 123123123
something
keyinfo
something

yahoo
something
something
osomething
keyinfo
something

and so on
# 2  
Old 07-19-2007
This doesn't work either

Code:
while (<FH>) {
    if (m/yahoosomething/) {
       $keyinfo = $_; 
       print "$keyinfo\n";
    }
    if (m/^(sometpattern) (\d\d\d)\$2/) {
       $somevalue = $_;
       print "$somevalue\n";
    }
    #print "$keyinfo $somevalue\n"; 
}
close FH;

# 3  
Old 07-19-2007
bit closer.. but now it says that %keyinfomaster is not initialized.... grrr

Code:
#!/usr/bin/perl -w

use strict;

my $ncb = $/;
my $cbn = $";
$/ = "\n\n";
#$" = "\n";

open(FH, '/script/perl/data/file1') || die "can't open file: $!";

my ($keyinfo,$somevalue);
my %keyinfomaster = ( );

while (<FH>) {
    if (m/^keysomething.+$/) {
       $keyinfo = $_; 
      # print "$keyinfo\n";
    }
    if (m/^something\/2\.0.+$/) {
  #   if (m/^(something\/2\.0).+\$2/) {
       $somevalue = $_;
       print "$somevalue\n";
    }
   print "$keyinfo $somevalue\n"; 
#    ($keyinfo,$somevalue) = split;
    push( @{$keyinfomaster{$keyinfo}}, $somevalue) ;
}

foreach $keyinfo ( sort key %keyinfomaster) {
         print "$keyinfo: @{$keyinfomaster{$keyinfo}}\n";
}

# 4  
Old 07-19-2007
Quote:
Originally Posted by hankooknara
Code:
    push( @{$keyinfomaster{$keyinfo}}, $somevalue) ;

No, you don't need to use references at all.

To assign something to a hash, don't use push(). Simply write

$keyinfomaster{$key} = $value;

Then simply get it by

$keyinfomaster{$key}

Don't use references unless you know the full story.
# 5  
Old 07-19-2007
still samething after changing to hash


1 #!/usr/bin/perl -w
2
3 use strict;
4
5 my $ncb = $/;
6 my $cbn = $";
7 $/ = "\n\n";
8 #$" = "\n";
9
10 open(FH, '/script/perl/data/somevalue') || die "can't open file: $!";
11
12 my ($keyinfo,$somevalue);
13 my %keyinfomaster = ( );
14
15 while (<FH>) {
16 if (m/^Call-ID:.+$/) {
17 $keyinfo = $_;
18 # print "$keyinfo\n";
19 }
20 if (m/^SIP\/2\.0.+$/) {
21 # if (m/^(SIP\/2\.0).+\$2/) {
22 $somevalue = $_;
23 print "$somevalue\n";
24 }
25 # print "$keyinfo $somevalue\n";
26 # ($keyinfo,$somevalue) = split;
27 # push( @{$keyinfomaster{$keyinfo}}, $somevalue) ;
28 $keyinfomaster{$keyinfo} = $somevalue;
29 }
30
31 foreach $keyinfo ( sort key %keyinfomaster) {
32 print "$keyinfomaster{$keyinfo}\n";
33 }
[root@wks-86-72 tmp]# ./!$ | head -1
./perl.yahoo | head -1
Use of uninitialized value in hash element at ./perl.yahoo line 28, <FH> chunk 1.
Use of uninitialized value in hash element at ./perl.yahoo line 28, <FH> chunk 2.
Use of uninitialized value in hash element at ./perl.yahoo line 28, <FH> chunk 3.
Use of uninitialized value in hash element at ./perl.yahoo line 28, <FH> chunk 4.
Use of uninitialized value in hash element at ./perl.yahoo line 28, <FH> chunk 5.
Use of uninitialized value in hash element at ./perl.yahoo line 28, <FH> chunk 6.
Use of uninitialized value in hash element at ./perl.yahoo line 28, <FH> chunk 7.
Use of uninitialized value in hash element at ./perl.yahoo line 28, <FH> chunk 8.
Use of uninitialized value in hash element at ./perl.yahoo line 28, <FH> chunk 9.
Use of uninitialized value in hash element at ./perl.yahoo line 28, <FH> chunk 10.
Use of uninitialized value in hash element at ./perl.yahoo line 28, <FH> chunk 11.
Use of uninitialized value in hash element at ./perl.yahoo line 28, <FH> chunk 12.
# 6  
Old 07-19-2007
Quote:
Originally Posted by hankooknara
still samething after changing to hash
It's obviously not the same, as the error message is no longer the same!

It's complaining $keyinfo is undefined. So you should check your program why that specific variable is undefined. Only you have the complete program and the data file so we cannot help you find out why that specific variable is undefined.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl question about

Hello everybody, I am new at the forum and a total newbie when it comes to Unix. I am trying to see how I can add the ability to kill a user's processes? I want to add this to my Shel Script Add the code/process into a subroutine. Also, I would like to use an array to store the list... (0 Replies)
Discussion started by: kinelisch
0 Replies

2. Shell Programming and Scripting

Perl Question

Hello all, I have the following line: xxx|xxxx|xxxx|xxx.xx|xxx And i insert the values in an array. I am trying to find out if the field of the array (where field=xxx.xx) has the '.' character. I am using the code below but it doesn't seem to work. if($field=~ /./) { ... (3 Replies)
Discussion started by: chriss_58
3 Replies

3. Shell Programming and Scripting

PERL Question ...

I am reading a file in perl script .. during the debug the $linein value is : linein : +ASM1,sys,||¬ |3Æqúoü;”ט|| from this line I am getting the tmepuser and password from above : ($tmpuser, $pwd) = ($linein =~ /^$server\s*,\s*(+)\s*,\|\|(.+)\|\|/sm); I am getting $tmpuser and... (2 Replies)
Discussion started by: talashil
2 Replies

4. Shell Programming and Scripting

another perl question

I fail to see how below answer is 1? can someone explain this for me? DB<3> $string = "The cat sat on the mat"; DB<4> $animal = ($string =~ m/The (.*) sat/); DB<5> print $animal; 1 (2 Replies)
Discussion started by: hankooknara
2 Replies

5. Shell Programming and Scripting

Perl question regarding [ ]

Below program, I do not get why item I am looking for is , instead of . When I do $#text, i get the right value for $value1, but when I do , i get somsething4, instead of somsethingxxxxxxxxxxxxxxxxxxx(which is what I am looking for. when I do , I get empty.. why? what did I do wrong? can you... (2 Replies)
Discussion started by: hankooknara
2 Replies

6. Shell Programming and Scripting

another perl question

I copy and paste from the book but this thing is not working. I cannot figure out what is wrong with myline 9.. can someone please tell me # cat ./sort4.pl #!/usr/bin/perl -w use strict; use warnings; my $input = shift; my $output = shift; open(IN, '<', $input) or die... (4 Replies)
Discussion started by: hankooknara
4 Replies

7. Shell Programming and Scripting

PERL question

Hello, pkzipc of a certain zip file yeilds the following in shell PKZIP(R) Version 6.0 FAST! Compression Utility for AIX Copyright 1989-2002 PKWARE Inc. All Rights Reserved. Registered Version PKZIP Reg. U.S. Pat. and Tm. Off. Patent No. 5,051,745 Viewing .ZIP: test.zip Length... (13 Replies)
Discussion started by: jerardfjay
13 Replies

8. Shell Programming and Scripting

perl question

If I use 2 system commands in a script, will one finish before the next one starts? or will it start the first and the second at the same time? i.e. system("ps | grep rminer"); system("ls -al | grep 431"); (1 Reply)
Discussion started by: BG_JrAdmin
1 Replies

9. Shell Programming and Scripting

Perl: tk question

When i run my perl/tk script, a perl window pops up behind the GUI window,, can this be hidden???? Also, can the Icon be changed, the Tk icon in every window??? (1 Reply)
Discussion started by: perleo
1 Replies

10. Shell Programming and Scripting

Question about Perl

Where can i find solid information about programming in Perl? Thank you in advance!!!:) (5 Replies)
Discussion started by: SolidSnake
5 Replies
Login or Register to Ask a Question