I am writing a parser to read in ftp log files and insert into a databse. I have everything working fine, except the legacy billing system being used generates bills for each user instead of the master account. Therefore, as a bandaid, I need to attach an account field to each uid for each insert. I figured I could do this using more if statements within my loop, which seemed to work for one, but as I added an additional it stopped working properly. Any help would be appreciated. Here is the code that I am having trouble with.
Code snippet:
while (<FILE>) {
($dow, $month, $day, $time, $year, $duration, $clientip, $size, $path, $ttype, $specialact, $type, $mode, $uid, $service, $authm, $authu, $st
atus) = split(/\s+/);
# ATTACH USERS TO MASTER ACCOUNTS
# -------------------------------
if ($uid eq "jdoe","bfoo","jjones") {
$account = "abc";
} elsif ($uid eq "msmith") {
$account = "xyz";
} elsif ($uid eq "zbills","vgoo") {
$account = "asdf";
}
# WILL NEED TO ADD MANY MORE elsif's OR COULD THESE BE ALL if's?;
# OR HOW COULD I REFERENCE A TEXT FILE OR DATABASE TABLE TO MATCH UID'S
# AND RETURN THE ACCOUNT TO BE ATTACHED TO EACH LINE OF LOG FILE BEING PARSED AND INPUT INTO DATABASE?
#
# CONVERT TYPE TO LEGACY DB METHOD
# --------------------------------
if ($type eq "o") {
$method = RETR;
} elsif ($type eq "i") {
$method = STOR;
}
unless ($size eq "-" || $duration eq "-") {
$sth->execute($date,$clientip,$duration,$size,$method,$appuid,$path,$account) or die "Couldn't execute statement: " . $sth->errstr;
}
}
Code snippet:
while (<FILE>) {
($dow, $month, $day, $time, $year, $duration, $clientip, $size, $path, $ttype, $specialact, $type, $mode, $uid, $service, $authm, $authu, $st
atus) = split(/\s+/);
# ATTACH USERS TO MASTER ACCOUNTS
# -------------------------------
if ($uid eq "jdoe","bfoo","jjones") {
$account = "abc";
} elsif ($uid eq "msmith") {
$account = "xyz";
} elsif ($uid eq "zbills","vgoo") {
$account = "asdf";
}
# WILL NEED TO ADD MANY MORE elsif's OR COULD THESE BE ALL if's?;
# OR HOW COULD I REFERENCE A TEXT FILE OR DATABASE TABLE TO MATCH UID'S
# AND RETURN THE ACCOUNT TO BE ATTACHED TO EACH LINE OF LOG FILE BEING PARSED AND INPUT INTO DATABASE?
#
# CONVERT TYPE TO LEGACY DB METHOD
# --------------------------------
if ($type eq "o") {
$method = RETR;
} elsif ($type eq "i") {
$method = STOR;
}
unless ($size eq "-" || $duration eq "-") {
$sth->execute($date,$clientip,$duration,$size,$method,$appuid,$path,$account) or die "Couldn't execute statement: " . $sth->errstr;
}
}