Hey all,
I'm new with Perl and need help with this simple script. I'm still
playing around with the script below to get a feel for Perl. My script
below is incomplete and I'm doing an array within an array which is
incorrect. Please help.
Here's what I want to do; I have to flat files (pipe delimited, export
from a database) that I want to parse through and assign variables for
each column. Basically, I want to parse through exclude_bases.txt and
do: if base_no in exclude_bases.txt equals to base_no in base.txt then
search in the "description" field of base.txt for the string listed in
the "keyword" field in exclude_bases.tx and replace with "new_keyword"
in exclude_bases.txt and write the out put into a new file called
"new_bases.txt".
Any suggestions on how I could accomplish the above task is greatly
appreciated. Thanks all.
Flat Files:
base.txt:
base_no|name|description
10000|test|test desc
10001|test2|test desc 2
10002|test3|test desc 3
exclude_bases.txt:
base_no|keyword|new_keyword|
10000|test desc|testdesc|0
10001|test desc 2|testdesc2|0
10002|test desc 3|testdesc3|1
#!/usr/bin/perl
use strict;
use warnings;
my $exclude_bases = "exclude_bases.txt";
my $current_base = "base.txt";
my $output = "new_bases.txt";
my %exclude_bases;
my $exclude_text;
my $exbase_no;
my $keyword;
my $new_keyword;
open(EXCLUDE,"exclude_bases.txt" )|| die("Could not open file!");
%exclude_bases=<EXCLUDE>;
close(EXCLUDE);
my $base_no ="";
my $name="";
my $description="";
my $current_base="";
my $base_text="";
my %bases;
open(BASE,"base.txt")|| die("Could not open file!");
%bases=<BASE>;
close(BASE);
#choping lines and assign variables to base.txt
foreach $base_text (%bases)
{
chop($base_text);
($base_no,$name,$description)=split(/\|/,$base_text);
#choping lines and assign variables to exclude_bases.txt
foreach $exclude_text (%exclude_bases)
{
chop($exclude_text);
($exbase_no,$keyword,$new_keyword)=split(/\|/,$base_text);
if ($exbase_no=$base_no) {
$keyword =~ s/$keyword/$new_keyword/g;}
}
}
~