use warnings;
use strict;
use DBI;
# Set datasource
my $dsn = "DBI:mysql:host=<hostname>;database=<dbname>"
. ";port=<portnumber>";
# Connect to database
my $dbh = DBI->connect($dsn,"userid","password");
print "Status: Connected to MySQL.\n";
my $filename = $ARGV[0];
open my $hin, '<', $filename
or die "Cannot open file /$filename/";
my @fcont = <$hin>;
my ($dir, $txt, $nbytes, $file_found, $sav_dir, $sav_file);
foreach my $line (@fcont)
{
if ($line =~ /New File|New Dir/)
{
chomp($line);
($dir) = $line =~ /New Dir\s+(?:[0-9]+|[0-9]+?\.[0-9]+?
+\s[a-z])\s(.*)/;
($file_found) = $line =~ /New File\s+(?:[0-9]+|[0-9]+?\.[0-9]+
+?\s[a-z])\s+(.*?$)/;
( $txt, $nbytes ) = $line =~ /(New File|New Dir)\s+([0-9]+|[0-
+9]+?\.[0-9]+?\s[a-z])\s+.*?/;
$sav_dir = $dir if $dir;
$sav_file = $file_found if $file_found;
$sav_dir = !defined $sav_dir ? q{} : $sav_dir;
$sav_file = !defined $sav_file ? q{} : $sav_file;
# print join("|", $ARGV[0],$txt,$nbytes,$sav_dir,$file_found).
+ "\n";
my $insert = $dbh->prepare('INSERT INTO <tablename>
(File,Type,Size,Dir,Name)
VALUES (?,?,?,?,?)') or die "Prepare failed: " . $
+dbh->errstr();
$insert->execute($ARGV[0],$txt,$nbytes,$sav_dir,$file_found)
+ or die "Execute failed: " . $dbh->errstr();
}
}
close $hin;
print "Status: Processing of $ARGV[0] complete.\n";
# Disconnect from the database
$dbh->disconnect ();
print "Status: Disconnected from MySQL.";
|