Here are some representative perl scripts which I use on my primary onsite Linux server (aka "Sleepy").
These are presented solely as examples for your reference, and completely without external comment.
-----
#! /usr/bin/perl
#####
#
# setup.pl
# MDJ 2022/05/30
#
# Sets up the Work List
# directories' contents
#
# To Run:
# . cdTenMinute.bsh
# cd to the desired
# subdirectory, e.g.
# 01GENPartA or
# 01GENPartB or
# etc.
# setup.pl
#
# ** WARNING **
# When saving perl scripts in
# Textpad, you should use
# the "Save As" command and
# change the Line Ending Box
# to "UNIX".
#
# Otherwise, you may get:
# /usr/bin/perl^M No such file
# ( ^M = \r\n ).
#
#####
# Pre-setup
use 5.32.0;
use File::Copy;
use Cwd;
print "\n";
print "Start Setup\n";
# Point Perl to the current working directory
my $mainDir = getcwd;
#print $mainDir . "\n";
# Work List basename
my $WBN = "workList.txt";
# Work List filename
my $FN0 = $mainDir . "/" . $WBN;
#print $FN0 . "\n";
# Work List variables
my $bookName = "";
my $divisionsList = "";
my $qProgressList = "";
my $qCoCoFile = "";
my $qJavaScriptFile = "";
my $qPythonFile = "";
my $eProgressList = "";
my $eManuscriptFile = "";
# Temporary Transfer Variables
my $rev0 = "";
my $rev1 = "";
my $PFIn = "";
my $PFOut = "";
# Open the Work List file
open(FH0, '<', $FN0) or die "Could not open '$FN0' $!";
# Read the Work List file in Scalar Context
# and remove the trailing newline characters
# and remove the trailing whitespace character
$bookName = ;
chomp($bookName);
chop($bookName);
print "bookName = " . $bookName . "\n";
$divisionsList = ;
chomp($divisionsList);
chop($divisionsList);
print "divisionsList = " . $divisionsList . "\n";
$qProgressList = ;
chomp($qProgressList);
chop($qProgressList);
print "qProgressList = " . $qProgressList . "\n";
$qCoCoFile = ;
chomp($qCoCoFile);
chop($qCoCoFile);
print "qCoCoFile = " . $qCoCoFile . "\n";
$qJavaScriptFile = ;
chomp($qJavaScriptFile);
chop($qJavaScriptFile);
print "qJavaScriptFile = " . $qJavaScriptFile . "\n";
$qPythonFile = ;
chomp($qPythonFile);
chop($qPythonFile);
print "qPythonFile = " . $qPythonFile . "\n";
$eProgressList = ;
chomp($eProgressList);
chop($eProgressList);
print "eProgressList = " . $eProgressList . "\n";
$eManuscriptFile = ;
chomp($eManuscriptFile);
chop($eManuscriptFile);
print "eManuscriptFile = " . $eManuscriptFile . "\n";
# Close the Work List file
close(FH0);
# Copy Questions Progress file to new name
$rev0 = reverse $qProgressList;
chop($rev0);
$rev1 = reverse $rev0;
$PFOut = $mainDir . $rev1;
my $PFIn = $mainDir . "/Progress/QuestionsProgress.txt";
copy($PFIn, $PFOut);
unlink $PFIn;
# Copy Expositions Progress file to new name
$rev0 = reverse $eProgressList;
chop($rev0);
$rev1 = reverse $rev0;
$PFOut = $mainDir . $rev1;
my $PFIn = $mainDir . "/Progress/ExpositionsProgress.txt";
copy($PFIn, $PFOut);
unlink $PFIn;
print "Setup complete\n\n";
exit;
#####
#
# EOF
#
#####
-----
#! /usr/bin/perl
#####
#
# TT.pl
# Traversal Test
# MDJ 2022/05/30
#
# To Run:
# . cdMiscTesting.bsh
# cd traversalTestingDirectory
# TT.pl
#
#####
# Pre-setup
use 5.30.0;
print "\n";
# Point Perl to the Testing Directory
my $mainDir = '/media/mdavidjohnson/Elements/workingdir/MiscTesting/traversalTestingDirectory';
# Traversal List basename
my $TBN = "TL.txt";
# Subdirectory name variable
my $subDir = "";
# Work List basename
my $WBN = "WL.txt";
# Work List filename
my $FN1 = "";
print "Starting Traversal Test\n";
# Form Traversal List filename
my $FN0 = $mainDir . "/" . $TBN;
# Open the Traversal List file
open(FH0, '<', $FN0) or die "Could not open '$FN0' $!";
# Read the Traversal List file in Scalar Context
while ()
{
# Get the subdirectory name from the Traversal List file
$subDir = $_;
# Remove newline character
chomp($subDir);
# Remove trailing whitespace character
chop($subDir);
# Form Work List filename
$FN1 = $mainDir . "/" . $subDir . "/" . $WBN;
# Report the file access
print $FN1;
# Open the Work List file
open(FH1, '<', $FN1) or die "Could not open '$FN1' $!";
# Report opened status
print " - opened";
# Close the Work List file
close(FH1);
# Report closed status
print " - closed.\n";
}
# Close the Traversal List file
close(FH0);
print "Traversal Test Finished\n";
exit;
#####
#
# EOF
#
#####
-----
#! /usr/bin/perl
#####
#
# KJVLastVerse.pl
# MDJ 2022/04/11
#
# Given:
# Book Abbreviation
# Chapter Number
# Returns:
# Last Verse Number
# for that Chapter
#
# To Run:
# KJVLastVerse.pl
#
# ** WARNING **
# When saving perl scripts in
# Textpad, you should use
# the "Save As" command and
# change the Line Ending Box
# to "UNIX".
#
# Otherwise, you may get:
# /usr/bin/perl^M No such file
# ( ^M = \r\n ).
#
#####
# Pre-setup
use 5.30.0;
# Perl's Database Interface Module
use DBI;
# Data Source Name
my $dsn = "dbi:mysql:dbname=KJVData";
# mysql Username
my $user = "userName";
# mysql Password
my $password = 'intentionallyObfuscated';
# mysql Attributes
my %attr = (RaiseError => 1, PrintError => 0);
# Open the Database Connection
my $dbh = DBI->connect($dsn, $user, $password, \%attr)
or die "failed to connect to MySQL database:DBI->errstr()";
print "\nStarting KJVLastVerse Run\n\n";
# Declare variables
my($bkAbbrev) = ""; # Book Abbreviation
my($chapNum) = ""; # Chapter Number
my($versNum) = ""; # Verse Number
# Get the inputs and convert as required
print "Enter the Book Abbreviation: ";
$bkAbbrev = ;
# Truncate to remove "\n"
chomp($bkAbbrev);
# Convert to all uppercase
$bkAbbrev = uc($bkAbbrev);
print "Enter the Chapter Number: ";
$chapNum = ;
# Truncate to remove "\n"
chomp($chapNum);
# Convert to numeric
$chapNum = 0 + $chapNum;
# Call the function
$versNum = &findLastVerseNum
($bkAbbrev, $chapNum);
# Display the result
print "\n";
print "Book Abbreviation = ".$bkAbbrev."\n";
print "Chapter Number = ".$chapNum."\n";
print "Verse Number = ".$versNum."\n";
print "\nKJVLastVerse Run Finished\n\n";
# Close the Database Connection
$dbh->disconnect;
exit;
sub findLastVerseNum
{
# $bkA = Book Abbreviation
# $chN = Chapter Number
# $vsN = Verse Number
my($bkA, $chN) = @_;
# Prepare the SELECT Query
my $sth = $dbh->prepare
("SELECT NumVerses
FROM verseData
WHERE BookAbbrev = '$bkA'
AND ChapterNum = '$chN'")
or die "prepare statement failed: $dbh->errstr()";
# Execute the SELECT query
$sth->execute();
# Get the result of the query
my($vsN) = $sth->fetchrow_array();
# Complete the query
$sth->finish();
return $vsN;
}
#####
#
# EOF
#
#####
-----
#! /usr/bin/perl
#####
#
# KJVPrevVerse.pl
# MDJ 2022/05/22
#
# Given:
# Book Abbreviation
# Chapter Number
# Returns:
# Number of previous
# verses for that
# Chapter
#
# To Run:
# KJVPrevVerse.pl
#
# ** WARNING **
# When saving perl scripts in
# Textpad, you should use
# the "Save As" command and
# change the Line Ending Box
# to "UNIX".
#
# Otherwise, you may get:
# /usr/bin/perl^M No such file
# ( ^M = \r\n ).
#
#####
# Pre-setup
use 5.30.0;
# Perl's Database Interface Module
use DBI;
# Data Source Name
my $dsn = "dbi:mysql:dbname=KJVData";
# mysql Username
my $user = "userName";
# mysql Password
my $password = 'intentionallyObfuscated';
# mysql Attributes
my %attr = (RaiseError => 1, PrintError => 0);
# Open the Database Connection
my $dbh = DBI->connect($dsn, $user, $password, \%attr)
or die "failed to connect to MySQL database:DBI->errstr()";
print "\nStarting KJVPrevVerse Run\n\n";
# Declare variables
my($bkAbbrev) = ""; # Book Abbreviation
my($chapNum) = ""; # Chapter Number
my($pVersNum) = ""; # Previous Number of Verses
# Get the inputs and convert as required
print "Enter the Book Abbreviation: ";
$bkAbbrev = ;
# Truncate to remove "\n"
chomp($bkAbbrev);
# Convert to all uppercase
$bkAbbrev = uc($bkAbbrev);
print "Enter the Chapter Number: ";
$chapNum = ;
# Truncate to remove "\n"
chomp($chapNum);
# Convert to numeric
$chapNum = 0 + $chapNum;
# Call the function
$pVersNum = &findPrevNumVerses
($bkAbbrev, $chapNum);
# Display the result
print "\n";
print "Book Abbreviation = ".$bkAbbrev."\n";
print "Chapter Number = ".$chapNum."\n";
print "Previous Number of Verses = ".$pVersNum."\n";
print "\nKJVPrevVerse Run Finished\n\n";
# Close the Database Connection
$dbh->disconnect;
exit;
sub findPrevNumVerses
{
# $bkA = Book Abbreviation
# $chN = Chapter Number
# $pvN = Previous Number of Verses
my($bkA, $chN) = @_;
# Prepare the SELECT Query
my $sth = $dbh->prepare
("SELECT NumPrevVerses
FROM verseData
WHERE BookAbbrev = '$bkA'
AND ChapterNum = '$chN'")
or die "prepare statement failed: $dbh->errstr()";
# Execute the SELECT query
$sth->execute();
# Get the result of the query
my($pvN) = $sth->fetchrow_array();
# Complete the query
$sth->finish();
return $pvN;
}
#####
#
# EOF
#
#####
-----
#! /usr/bin/perl
#####
#
# KJVInfo.pl
# MDJ 2022/04/11
#
# Given:
# Running Verse Number
# Returns:
# Book Abbreviation
# Chapter Number
# Verse Number
#
# To Run:
# KJVInfo.pl
#
# ** WARNING **
# When saving perl scripts in
# Textpad, you should use
# the "Save As" command and
# change the Line Ending Box
# to "UNIX".
#
# Otherwise, you may get:
# /usr/bin/perl^M No such file
# ( ^M = \r\n ).
#
#####
# Pre-setup
use 5.30.0;
# Perl's Database Interface Module
use DBI;
# Data Source Name
my $dsn = "dbi:mysql:dbname=KJVData";
# mysql Username
my $user = "userName";
# mysql Password
my $password = 'intentionallyObfuscated';
# mysql Attributes
my %attr = (RaiseError => 1, PrintError => 0);
# Open the Database Connection
my $dbh = DBI->connect($dsn, $user, $password, \%attr)
or die "failed to connect to MySQL database:DBI->errstr()";
print "\nStarting KJVInfo Run\n\n";
# Declare variables
my($runVersNum) = ""; # Running Verse Number
my($bkAbbrev) = ""; # Book Abbreviation
my($chapNum) = ""; # Chapter Number
my($versNum) = ""; # Verse Number
my(@Info) = ("", "", ""); # Information Array
# Get the input and convert as required
print "Enter the Running Verse Number: ";
$runVersNum = ;
# Truncate to remove "\n"
chomp($runVersNum);
# Convert to numeric
$runVersNum = 0 + $runVersNum;
# Call the function
@Info = &findKJVInfo
($runVersNum);
# Break out the results
($bkAbbrev, $chapNum, $versNum) = @Info;
# Display the result
print "\n";
print "Book Abbreviation = ".$bkAbbrev."\n";
print "Chapter Number = ".$chapNum."\n";
print "Verse Number = ".$versNum."\n";
print "Running Verse Number = ".$runVersNum."\n";
print "\nKJVInfo Run Finished\n\n";
# Close the Database Connection
$dbh->disconnect;
exit;
sub findKJVInfo
{
# $RVN = Running Verse Number
# $bkA = Book Abbreviation
# $chN = Chapter Number
# $vsN = Verse Number
# @kjv = Information Array
my($RVN) = @_;
# Prepare the SELECT Query
my $sth = $dbh->prepare
("SELECT BookAbbrev, ChapterNum, VerseNum
FROM verseList
WHERE RunVerseNum = '$RVN'")
or die "prepare statement failed: $dbh->errstr()";
# Execute the SELECT query
$sth->execute();
# Get the result of the query
my($bkA, $chN, $vsN) = $sth->fetchrow_array();
my(@kjv) = ($bkA, $chN, $vsN);
# Complete the query
$sth->finish();
return @kjv;
}
#####
#
# EOF
#
#####
-----
#! /usr/bin/perl
#####
#
# KJV300.pl
# MDJ 2022/05/22
#
# Given:
# Starting Book Abbreviation
# Starting Chapter Number
# Returns:
# Ending Book, Chapter
# and Verse for 300
# Verses Later
#
# To Run:
# KJV300.pl
#
# ** WARNING **
# When saving perl scripts in
# Textpad, you should use
# the "Save As" command and
# change the Line Ending Box
# to "UNIX".
#
# Otherwise, you may get:
# /usr/bin/perl^M No such file
# ( ^M = \r\n ).
#
#####
# Pre-setup
use 5.30.0;
# Perl's Database Interface Module
use DBI;
# Data Source Name
my $dsn = "dbi:mysql:dbname=KJVData";
# mysql Username
my $user = "userName";
# mysql Password
my $password = 'intentionallyObfuscated';
# mysql Attributes
my %attr = (RaiseError => 1, PrintError => 0);
# Open the Database Connection
my $dbh = DBI->connect($dsn, $user, $password, \%attr)
or die "failed to connect to MySQL database:DBI->errstr()";
print "\nStarting KJV300 Run\n\n";
# Declare variables
my($sBkAbbrev) = ""; # Starting Book Abbreviation
my($sChapNum) = ""; # Starting Chapter Number
my($pVersNum) = ""; # Previous Number of Verses
my($runVersNum) = ""; # Running Verse Number
my($eBkAbbrev) = ""; # Ending Book Abbreviation
my($eChapNum) = ""; # Ending Chapter Number
my($eVersNum) = ""; # Ending Verse Number
my(@Info) = ("", "", ""); # Information Array
# Get the inputs and convert as required
print "Enter the Starting Book Abbreviation: ";
$sBkAbbrev = ;
# Truncate to remove "\n"
chomp($sBkAbbrev);
# Convert to all uppercase
$sBkAbbrev = uc($sBkAbbrev);
print "Enter the Starting Chapter Number: ";
$sChapNum = ;
# Truncate to remove "\n"
chomp($sChapNum);
# Convert to numeric
$sChapNum = 0 + $sChapNum;
# Call the findPrevNumVerses function
$pVersNum = &findPrevNumVerses
($sBkAbbrev, $sChapNum);
# Increment the Verses variable
$runVersNum = $pVersNum + 300;
if ($runVersNum > 31102)
{
$runVersNum = 31102;
}
# Call the findKJVInfo function
@Info = &findKJVInfo
($runVersNum);
# Break out the results
($eBkAbbrev, $eChapNum, $eVersNum) = @Info;
# Display the results
print "\n";
print "Starting Book Abbreviation = ".$sBkAbbrev."\n";
print "Starting Chapter Number = ".$sChapNum."\n";
print " +300\n";
print "Ending Book Abbreviation = ".$eBkAbbrev."\n";
print "Ending Chapter Number = ".$eChapNum."\n";
print "Ending Verse Number = ".$eVersNum."\n";
print "\nKJV300 Run Finished\n\n";
# Close the Database Connection
$dbh->disconnect;
exit;
sub findPrevNumVerses
{
# $bkA = Book Abbreviation
# $chN = Chapter Number
# $pvN = Previous Number of Verses
my($bkA, $chN) = @_;
# Prepare the SELECT Query
my $sth = $dbh->prepare
("SELECT NumPrevVerses
FROM verseData
WHERE BookAbbrev = '$bkA'
AND ChapterNum = '$chN'")
or die "prepare statement failed: $dbh->errstr()";
# Execute the SELECT query
$sth->execute();
# Get the result of the query
my($pvN) = $sth->fetchrow_array();
# Complete the query
$sth->finish();
return $pvN;
}
sub findKJVInfo
{
# $RVN = Running Verse Number
# $bkA = Book Abbreviation
# $chN = Chapter Number
# $vsN = Verse Number
# @kjv = Information Array
my($RVN) = @_;
# Prepare the SELECT Query
my $sth = $dbh->prepare
("SELECT BookAbbrev, ChapterNum, VerseNum
FROM verseList
WHERE RunVerseNum = '$RVN'")
or die "prepare statement failed: $dbh->errstr()";
# Execute the SELECT query
$sth->execute();
# Get the result of the query
my($bkA, $chN, $vsN) = $sth->fetchrow_array();
my(@kjv) = ($bkA, $chN, $vsN);
# Complete the query
$sth->finish();
return @kjv;
}
#####
#
# EOF
#
#####
-----
#! /usr/bin/perl
#####
#
# KJVQuizList.pl
# MDJ 2022/05/23
#
# Given:
# Starting Book Abbreviation
# Starting Chapter Number
# Ending Book Abbreviation
# Ending Chapter Number
# Returns:
# Quiz Question Verse Range List
#
# To Run:
# KJVQuizList.pl
#
# ** WARNING **
# When saving perl scripts in
# Textpad, you should use
# the "Save As" command and
# change the Line Ending Box
# to "UNIX".
#
# Otherwise, you may get:
# /usr/bin/perl^M No such file
# ( ^M = \r\n ).
#
#####
# Pre-setup
use 5.30.0;
# Perl's Database Interface Module
use DBI;
# Data Source Name
my $dsn = "dbi:mysql:dbname=KJVData";
# mysql Username
my $user = "userName";
# mysql Password
my $password = 'intentionallyObfuscated';
# mysql Attributes
my %attr = (RaiseError => 1, PrintError => 0);
# Open the Database Connection
my $dbh = DBI->connect($dsn, $user, $password, \%attr)
or die "failed to connect to MySQL database:DBI->errstr()";
print "\nStarting KJVQuizList Run\n\n";
# Declare variables
my($sBkAbbrev) = ""; # Starting Book Abbreviation
my($sChapNum) = ""; # Starting Chapter Number
my($sVersNum) = ""; # Starting Verse Number
my($eBkAbbrev) = ""; # Ending Book Abbreviation
my($eChapNum) = ""; # Ending Chapter Number
my($eVersNum) = ""; # Ending Verse Number
my($pVersNum) = ""; # Starting Number of Previous Verses
my($runVersNum) = ""; # Ending Running Verse Number
my($totNumVerses) = ""; # Total number of verses in quiz
my($numQuizQuest) = 50; # Number of Quiz Questions
my($avgNumVerses) = ""; # Average number of verses
# per quiz question
my($minNumVerses) = ""; # Minimum number of verses
# per quiz question
my($maxNumVerses) = ""; # Maximum number of verses
# per quiz question
my($qqBreak) = ""; # Quiz questions break number
# i.e. First question using
# $maxNumVerses
my($qsC) = ""; # Continuing Running Verse Number
my($qsRunVersNum) = ""; # Question Starting Running Verse Number
my($qeRunVersNum) = ""; # Question Ending Running Verse Number
my($c) = ""; # counter
my($qrp) = ""; # Quiz Question Number Prefix
my($qsBA) = ""; # Quiz Question Starting Book Abbreviation
my($qsCN) = ""; # Quiz Question Starting Chapter Number
my($qsVN) = ""; # Quiz Question Starting Verse Number
my($qeBA) = ""; # Quiz Question Ending Book Abbreviation
my($qeCN) = ""; # Quiz Question Ending Chapter Number
my($qeVN) = ""; # Quiz Question Ending Verse Number
my(@Info) = ("", "", ""); # Information Array
# Get the input and convert as required
print "Enter the Starting Book Abbreviation: ";
$sBkAbbrev = ;
# Truncate to remove "\n"
chomp($sBkAbbrev);
# Convert to all uppercase
$sBkAbbrev = uc($sBkAbbrev);
print "Enter the Starting Chapter Number: ";
$sChapNum = ;
# Truncate to remove "\n"
chomp($sChapNum);
# Convert to numeric
$sChapNum = 0 + $sChapNum;
# Call the findPrevNumVerses function
$pVersNum = &findPrevNumVerses
($sBkAbbrev, $sChapNum);
print "Enter the Ending Book Abbreviation: ";
$eBkAbbrev = ;
# Truncate to remove "\n"
chomp($eBkAbbrev);
# Convert to all uppercase
$eBkAbbrev = uc($eBkAbbrev);
print "Enter the Ending Chapter Number: ";
$eChapNum = ;
# Truncate to remove "\n"
chomp($eChapNum);
# Convert to numeric
$eChapNum = 0 + $eChapNum;
# Call the findLastVerseNum function
$eVersNum = &findLastVerseNum
($eBkAbbrev, $eChapNum);
# Call the findRunVerseNum function
$runVersNum = &findRunVerseNum
($eBkAbbrev, $eChapNum, $eVersNum);
# Calculate the total number of
# verses to be considered in
# the quiz
$totNumVerses = $runVersNum - $pVersNum;
#***
print "tot number of verses = ".$totNumVerses."\n";
# Calculate the average number of
# verses per quiz question
$avgNumVerses = $totNumVerses / $numQuizQuest;
#***
print "avg number of verses = ".$avgNumVerses."\n";
# Calculate the minimum number of
# verses per quiz question
$minNumVerses = int($avgNumVerses);
#***
print "min number of verses = ".$minNumVerses."\n";
# Calculate the maximum number of
# verses per quiz question
$maxNumVerses = $minNumVerses + 1;
#***
print "max number of verses = ".$maxNumVerses."\n";
# Calculate the Quiz Questions break number
$qqBreak = $numQuizQuest -
int(($avgNumVerses - $minNumVerses)
* $numQuizQuest);
#***
print "break number = ".$qqBreak."\n";
# Initiate Continuing Running Verse Number
$qsC = $pVersNum;
# Report Questions: #0 to break number
print "\n";
for ($c = 0; $c < $qqBreak; $c++)
{
if ($c < 10)
{
$qrp = "Q0".$c." - ";
}
else
{
$qrp = "Q".$c." - ";
}
$qsRunVersNum = $qsC + 1;
$qeRunVersNum = $qsC + $minNumVerses;
$qsC = $qeRunVersNum;
&reportLine;
}
# Report Questions: break number
# to next-to-last question
for ($c = $qqBreak; $c < $numQuizQuest - 1; $c++)
{
if ($c < 10)
{
$qrp = "Q0".$c." - ";
}
else
{
$qrp = "Q".$c." - ";
}
$qsRunVersNum = $qsC + 1;
$qeRunVersNum = $qsC + $maxNumVerses;
$qsC = $qeRunVersNum;
&reportLine;
}
# Report last question
$c = $numQuizQuest - 1;
$qrp = "Q".$c." - ";
$qsRunVersNum = $qsC + 1;
$qeRunVersNum = $runVersNum;
&reportLine;
print "\nKJVQuizList Run Finished\n\n";
# Close the Database Connection
$dbh->disconnect;
exit;
#####
#
# Functions
#
#####
sub findPrevNumVerses
{
# $bkA = Book Abbreviation
# $chN = Chapter Number
# $pvN = Previous Number of Verses
my($bkA, $chN) = @_;
# Prepare the SELECT Query
my $sth = $dbh->prepare
("SELECT NumPrevVerses
FROM verseData
WHERE BookAbbrev = '$bkA'
AND ChapterNum = '$chN'")
or die "prepare statement failed: $dbh->errstr()";
# Execute the SELECT query
$sth->execute();
# Get the result of the query
my($pvN) = $sth->fetchrow_array();
# Complete the query
$sth->finish();
return $pvN;
}
sub findLastVerseNum
{
# $bkA = Book Abbreviation
# $chN = Chapter Number
# $vsN = Verse Number
my($bkA, $chN) = @_;
# Prepare the SELECT Query
my $sth = $dbh->prepare
("SELECT NumVerses
FROM verseData
WHERE BookAbbrev = '$bkA'
AND ChapterNum = '$chN'")
or die "prepare statement failed: $dbh->errstr()";
# Execute the SELECT query
$sth->execute();
# Get the result of the query
my($vsN) = $sth->fetchrow_array();
# Complete the query
$sth->finish();
return $vsN;
}
sub findRunVerseNum
{
# $bkA = Book Abbreviation
# $chN = Chapter Number
# $vsN = Verse Number
# $RVN = Running Verse Number
my($bkA, $chN, $vsN) = @_;
# Prepare the SELECT Query
my $sth = $dbh->prepare
("SELECT RunVerseNum
FROM verseList
WHERE BookAbbrev = '$bkA'
AND ChapterNum = '$chN'
AND VerseNum = '$vsN'")
or die "prepare statement failed: $dbh->errstr()";
# Execute the SELECT query
$sth->execute();
# Get the result of the query
my($RVN) = $sth->fetchrow_array();
# Complete the query
$sth->finish();
return $RVN;
}
sub findKJVInfo
{
# $RVN = Running Verse Number
# $bkA = Book Abbreviation
# $chN = Chapter Number
# $vsN = Verse Number
# @kjv = Information Array
my($RVN) = @_;
# Prepare the SELECT Query
my $sth = $dbh->prepare
("SELECT BookAbbrev, ChapterNum, VerseNum
FROM verseList
WHERE RunVerseNum = '$RVN'")
or die "prepare statement failed: $dbh->errstr()";
# Execute the SELECT query
$sth->execute();
# Get the result of the query
my($bkA, $chN, $vsN) = $sth->fetchrow_array();
my(@kjv) = ($bkA, $chN, $vsN);
# Complete the query
$sth->finish();
return @kjv;
}
sub reportLine
{
# Call the findKJVInfo function
# for the question's starting verse
@Info = &findKJVInfo
($qsRunVersNum);
# Break out the results
($qsBA, $qsCN, $qsVN) = @Info;
# Call the findKJVInfo function
# for the question's ending verse
@Info = &findKJVInfo
($qeRunVersNum);
# Break out the results
($qeBA, $qeCN, $qeVN) = @Info;
# Print the report line
print $qrp.$qsBA." ".$qsCN.":".$qsVN." to ".
$qeBA." ".$qeCN.":".$qeVN."\n";
}
#####
#
# EOF
#
#####
-----
-----
-----