Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^2: How to pass hash site variables into sql connection using perl?

by finddata (Sexton)
on Mar 30, 2017 at 05:47 UTC ( #1186446=note: print w/replies, xml ) Need Help??


in reply to Re: How to pass hash site variables into sql connection using perl?
in thread How to pass hash site variables into sql connection using perl?

Not enough arguments for connect at /jan/bin/r.cgi line 36, near "$site)"
  • Comment on Re^2: How to pass hash site variables into sql connection using perl?

Replies are listed 'Best First'.
Re^3: How to pass hash site variables into sql connection using perl?
by poj (Abbot) on Mar 30, 2017 at 06:02 UTC

    Please post the code that gives that error.
    I guess you need to rename your sub to dbconnect like shown here. You can't use connect because it is a DBI method.

    poj
      I have posted the code .Please look into it.
      I had to pass like this how can i pass it for the above script which you had included? $site{$site}{'current'} = "a_$site\_current";
      use Getopt::Long; GetOptions("site=s" => \my $site) or die "Error in command line arguments\n"; defined $site or die "usage: $0 site_name\n"; my %site_map = ( site1 => { host => 'am.d.aog.com', db=>'site1', user=>'db_cad', pw= +>'Cad123' }, site2 => { host => 'am.d.aog.com', db=>'site2', user=>'db_cad', pw +=>'Cad123' }, ); my $dbh = dbconnect($site); print $dbh; sub dbconnect { my $s = shift; die "bad site $s" unless $site_map{$s}; my $dsn = "DBI:mysql:database=$site_map{$s}{db};host=$site_map{$s} +{host}"; my $dbh = DBI->connect($dsn, $site_map{$s}{'current'}{user}, $site +_map{$s}{'current'}{pw}) or die "ERROR: can't connect to database server site $s"; return $dbh; }
      This is how i tried from your code.
      i got the following error
      usage: jan/bin/r.cgi site_name

        The error is because you have added another level 'current' into the hash here

        $site_map{$s}{'current'}{user},$site_map{$s}{'current'}{pw}

        Why ?

      i had used current because every database name will have current.So i tried to include those things inside it.

        But you didn't change the hash to suit like this

        #!perl use strict; my %site_map = ( site1 => { host => 'dam.sd.aog.com', db => 'a_site1_current', current => { user => 'ad', pw => '123' } }, site2 => { host => 'dam.sd.aog.com', db => 'a_site2_current', current => { user => 'ad', pw => '123' } }, site3 => { host => 'dam.sd.aog.com', db => 'a_site3_current', current => { user => 'ad', pw => '123' } }, );

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1186446]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (5)
As of 2019-12-11 03:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?