Below is the code I wrote in one of my Perl modules that would allow me to query a MySQL table using DBI, and get back every row.
It does work, but I myself have a problem reading it, and to be honest, even understanding each level where I have to dereference a a reference that needed to be dereferenced.
I'm not even sure I understand what I've written, and therefore not even sure I did it properly.
I'm talking about the lines:
foreach my $rows (@{$data}) {
my @newArray = @{$rows};
Could I have written it better, cleaner, or safer?
###### from my Perl pm module
our @ticketsFields = qw( ... every column in my table...);
### number of columns
our $ticketsFieldsSize = @ticketsFields;
our @ticketsRecords;
sub getTicketsRecords {
### my conditional arguments
### to be used in WHERE and AND
my (...multiple args... ) = @_;
### build select command
### grabbing every column
my $dbCommand = qq^select ^;
foreach (@ticketsFields) {
$dbCommand .= "$_,";
}
$dbCommand =~ s/,$//;
### and the conditional arguments passed in
$dbCommand .= ...
### execute command
### get the data
$dbHandle=$db->prepare($dbCommand);
$dbHandle->execute();
my $data = $dbHandle->fetchall_arrayref();
$dbHandle->finish;
### go throught every row, in the reference array
foreach my $rows (@{$data}) {
### dereference the first/next row
my @newArray = @{$rows};
### create a blank hash
my %GenericData;
### loop through the new row
### for every column in the table
for(my $x = 0; $x < $ticketsFieldsSize; $x++)
{
### assign the key and value in the hash
$GenericData{$ticketsFields[$x]} = $newArray[$x];
}
### add reference to has to an array
push @ticketsRecords, \%GenericData;
}
### pass back a reference to my array of hash references
return \@ticketsRecords;
}
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|