Sponsored Content
Top Forums Shell Programming and Scripting PERL - Use of uninitialized value in pattern match (m//) Post 302938588 by chris01010 on Tuesday 17th of March 2015 06:00:56 PM
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
 

10 More Discussions You Might Find Interesting

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

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

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

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

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

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

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

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

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

10. 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
OPENDIR(3)						     Linux Programmer's Manual							OPENDIR(3)

NAME
opendir - open a directory SYNOPSIS
#include <sys/types.h> #include <dirent.h> DIR *opendir(const char *name); DESCRIPTION
The opendir() function opens a directory stream corresponding to the directory name, and returns a pointer to the directory stream. The stream is positioned at the first entry in the directory. RETURN VALUE
The opendir() function returns a pointer to the directory stream or NULL if an error occurred. ERRORS
EACCES Permission denied. EMFILE Too many file descriptors in use by process. ENFILE Too many files are currently open in the system. ENOENT Directory does not exist, or name is an empty string. ENOMEM Insufficient memory to complete the operation. ENOTDIR name is not a directory. NOTES
The underlying file descriptor of the directory stream can be obtained using dirfd(3). CONFORMING TO
SVID 3, POSIX, BSD 4.3 SEE ALSO
open(2), closedir(3), dirfd(3), readdir(3), rewinddir(3), scandir(3), seekdir(3), telldir(3) 1995-06-11 OPENDIR(3)
All times are GMT -4. The time now is 06:23 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy