PERL - Use of uninitialized value in pattern match (m//)


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting PERL - Use of uninitialized value in pattern match (m//)
# 1  
Old 03-17-2015
PERL - Use of uninitialized value in pattern match (m//)

I have written a PERL script to read files from directory that the filename contains OT. It then takes each line of each file and prints the first 5 characters before the first occurence of a /.

Currently I am getting the error:

Use of uninitialized value in string at rowGrab.pl line 43.
Use of uninitialized value in pattern match (m//) at rowGrab.pl line 41.

Code:
#!/usr/bin/perl
use strict;
my $log_dir = '/home/user1';
my $trans_dir = '/data/directoy1';
my $file;
my $participant;
my @files;
my $line;
 
if (!open(LOG, " >>$log_dir/trans.log")) {
   syslog("Warning:","Cannot open log file called: $log_dir/trans.log");
   die "Cannot open the file $log_dir/trans.log, $!";
}
undef (@files);
opendir(DIR,$trans_dir);
my @files = grep {
            /(OT)/             # Filename contains OT
            && -f "$trans_dir/$_"   # and is a file
        } readdir(DIR);
foreach $file (@files) {
   print STDERR "File: $file\n";
   open(FILE,"<$trans_dir/$file") or die "Cannot open $file";
      print "$file\n";
   for $line (<FILE>) {
      ($participant) =~/(.....)\//;
      print "$participant";
      close (FILE);
   }
}
closedir(DIR);

Can anyone provide some guidance?

Also prior to putting in string matching, I just printed the filename. This however got the error "Out of memory".

The directory contains 5487 files and each file averages 119 MB.

I understand this is a genuine memory issue, I was just wondering if anyone knew a way round it?

Thanks

Chris
# 2  
Old 03-17-2015
This cannot be your actual script. There are no lines 41 and 43.
# 3  
Old 03-18-2015
Hi,

You are partly correct, I had some debug lines in which I removed to make it neater for posting.

The script actually errors on lines 25 and 26 now.

Thanks

Chris
# 4  
Old 03-18-2015
I think this is what you mean:
Code:
   for $line (<FILE>) {
      if ($line =~ /(.....)\//) {
        $participant = $1;
      }
      print "$participant";
   }
   close(FILE)

And don't close(FILE) inside the for-loop. If you do so, perl will not be able to read from the file in next iteration.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl removing line match with pattern in column

Hi, I have log like this: ... (1 Reply)
Discussion started by: justbow
1 Replies

2. Shell Programming and Scripting

Perl removing line match with pattern in column

Hi, I have log like this: ... (1 Reply)
Discussion started by: justbow
1 Replies

3. Shell Programming and Scripting

Perl match pattern

Hi all, i have a peice of Perl script like this: foreach (@line) { @tmp = split /;/,$_; #print "Line is: $_\n"; switch($tmp){ case m/p60/i { push @p60, , $tmp ]; ... (7 Replies)
Discussion started by: arrals_vl
7 Replies

4. Shell Programming and Scripting

How to replace with pattern match using Perl

I have to replace a line, if it has a pattern for example Suppose file.out contains: <tr><td class="cB">Hello</td><td class="cB">1245</td><td class="cB">958</td><td class="cRB">1.34</td><td class="cRB">1.36</td></tr> <tr><td class="cB">world</td><td class="cB">3256</td><td... (8 Replies)
Discussion started by: sol_nov
8 Replies

5. Shell Programming and Scripting

perl pattern match on xml

using perl Hi All, i was wondering if anyone can solve how to extract the full tag from the xml line ie not sure what to put in the m// to get the string "/data/TOP471//context_data/instruments.txt" I basically want the above filename in a variable for further processing... $_ =" ... (0 Replies)
Discussion started by: satnamx
0 Replies

6. Shell Programming and Scripting

Perl Pattern Match

Hi Friends, I have a tuff time with regular expressionss. Please let me know how to make this happen as it consumed lots of my time but in vain. Here is the sample text file i need to match for. I need to search for pattern1 removed, if it matches then search for pattern types either SE\ or... (2 Replies)
Discussion started by: nmattam
2 Replies

7. Shell Programming and Scripting

Perl Array / pattern match large CPU usage

Hi, I have one file in this format 20 value1 33 value2 56 value3 I have another file in this format: 34,30-SEP-09,57,100237775,33614510126,2,34 34,30-SEP-09,57,100237775,33620766654,2,34 34,30-SEP-09,108,100237775,33628458122,2,34 34,30-SEP-09,130,100237775,33635266741,2,254... (6 Replies)
Discussion started by: Donkey25
6 Replies

8. Shell Programming and Scripting

pattern match url in string / PERL

Am trying to remove urls from text strings in PERL. I have the following but it does not seem to work: $remarks =~ s/www\.\s+\.com//gi; In English, I want to look for www. then I want to delete the www. and everything after it until I hit a space (but not including the space). It's not... (2 Replies)
Discussion started by: mrealty
2 Replies

9. Shell Programming and Scripting

Perl: Printing Multiple Lines after pattern match

Hello People, Need some assistance/guidance. OUTLINE: Two files (File1 and File2) File1 has some ids such as 009463_3922_1827 897654_8764_5432 File2 has things along the lines of: Query= 009463_3922_1827 length=252 (252 letters) More stufff here ... (5 Replies)
Discussion started by: Deep9000
5 Replies

10. Shell Programming and Scripting

Perl script to match a pattern and print lines

Hi I have a file (say 'file1')and I want to search for a first occurence of pattern (say 'ERROR') and print ten lines in the file below pattern. I have to code it in PERL and I am using Solaris 5.9. I appreciate any help with code Thanks Ammu (6 Replies)
Discussion started by: ammu
6 Replies
Login or Register to Ask a Question