JaeDre619 has asked for the wisdom of the Perl Monks concerning the following question:
It seems like I've been a novice for sometime. I use perl in spurts and forget a lot of things I just learned. I really want to get better at this. So, I'm always asking for best practices as most of the things I use perl for are for building small utilities to help me as database administrator.
On that note, I need your help with my perl script. Especially my regular expression. I have an input file (FileList.txt) that is fairly static and has a few lines. The entries of this input file are filenames with their path directories. The first (2) files listed have another file name within that file, but it doesn't have the school name embedded in its filename like the others.
Ex. (FileList.txt)/home/test/abc/.date_run_dir /home/test/def/.date_run_dir /home/test/abc/.date_file_sent.email@wolverine.cole.edu /home/test/abc/.date_file_sent.dp3.drew.net /home/test/def/.date_file_sent.email@wolverine.cole.edu /home/test/def/.date_file_sent.dp3.drew.net
For each file listed, I want to extract type abc or def and place in a variable. I also want to extract school names cole or drew as values in a variable. If there is no school names as seen in the first (2) files, then value should be named null
Also for each filename listed, I want the contents of those files in a variable. Each file has as single value name. Nothing complex.
Script thus far:Output:use strict; #use warnings; my $file = '/home/test/FileList.txt'; open my $FILE, '<', $file or die "unable to open '$file' for reading: +$!"; while (my $line = <$FILE>) { chomp($line); #if ($line =~ m#home/test/(\w{3}).*[.](\w+)[.].*#) { if ($line =~ m#home/test/(\w{3}).*[.](\w+)[.]?.*#) { #print "$line\n"; .last_file_sent* open my $file2, '<', $line or die "unable to open '$file' for +reading: $!"; while(my $line2 = <$file2>) { print "Type:$1:School:$2:File:$line2"; #print "$line2"; } close $file2; } } #end while close $FILE;
(note, regex is capturing edu or net which is not what i want. Also regex is capturing date_run_dir which in this case if there is no school name in the file name, default to value of null.
Thanks for your help.Type:abc:School:date_run_dir:File:/product/classroom/subject/data/sysf +eed_abc_2010120810.ext3 Type:def:School:date_run_dir:File:/product/classroom/subject/data/sysf +eed_def_2010120806.ext3 Type:abc:School:edu:File:domain_abc.dat.2010120810.ext3 Type:abc:School:net:File:domain_abc.dat.2010120810.ext3 Type:def:School:edu:File:domain_def.dat.2010120805.ext3 Type:def:School:net:File:domain_def.dat.2010120804.ext3
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Help constructing proper regex to extract values from filenames and concurrently opening those same files to access records
by Anonymous Monk on Dec 11, 2010 at 08:28 UTC | |
by JaeDre619 (Acolyte) on Dec 11, 2010 at 16:04 UTC | |
by JaeDre619 (Acolyte) on Dec 12, 2010 at 00:07 UTC | |
|
Re: Help constructing proper regex to extract values from filenames and concurrently opening those same files to access records
by Marshall (Canon) on Dec 12, 2010 at 09:24 UTC | |
by JaeDre619 (Acolyte) on Dec 12, 2010 at 16:31 UTC |