kazak has asked for the wisdom of the Perl Monks concerning the following question:
1. FetchDataset($label_id,$role_id,'dataset') should return a hash where key\value pares will be created from table column names\values returned by query.
2. GetValue('log_file') will check if "dataset" exists and in case of success will return this value.
So this where I got stuck. I'm not sure if I understand how to store data returned from a DB without pre defined keys in "$self" reference like $self = {label_id => shift, role_id => shift,....} which is not to good for me because I'm trying to make this module to be able to retrieve data from different tables.#!/usr/bin/perl -w package Conf; use DBI; my $dbh = DBI->connect("DBI:mysql:database=framework;host=192.168.1.1; +port=3306;", "test", "test", {'RaiseError' => 1}); sub new { $class = shift; my $self = {}; die "ERROR: Connection to DB failed.Dying." if !$dbh; bless $self, $class; return $self; } sub FetchDataset { my ( $self,$label_id,$role_id,$data_type ) = @_; print "$self\n"; print "$label_id\n"; print "$role_id\n"; print "$data_type\n"; if ($data_type eq "dataset") { $sth = $dbh->prepare(qq{ SELECT `cfg_role_attrs`.`attr +_key` , `cfg_datasets`.`attr_value` FROM `cfg_datasets` LEFT JOIN `c +fg_role_attrs` ON `cfg_datasets`.`attr_id` = `cfg_role_attrs`.`attr_i +d` WHERE `cfg_datasets`.`role_id` = $role_id}); $rv = $sth->execute(); if (!$rv) { die "Building 'global' dataset for: |$label_i +d - $role_id : FAILED\n"; } $self = $sth->fetchrow_hashref(); return $self; } } sub GetValue { my ($key) = @_; return $self->{$key}; } 1;
And this is example how I'm planning to use it:
Thanks in advance for any help.#!/usr/bin/perl -w use warnings; use strict; use Conf; my $object = Conf->new(); my $d_set = $object->FetchDataset('1','1','dataset'); my $value = $object->GetValue('log_file'); print "Coresponding value is : $value\n";
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: OOP Data extractor
by Anonymous Monk on Nov 03, 2012 at 16:46 UTC | |
by kazak (Beadle) on Nov 03, 2012 at 17:26 UTC | |
by Anonymous Monk on Nov 04, 2012 at 01:10 UTC |