in reply to Too many arguments to connect-help?

Confirming erix (++) recommendation:

DBD::mysql confirms the syntax to be:

$dsn = "DBI:mysql:database=$database;host=$hostname;port=$port";
It does not document if "dbi" in lower-case will be accepted.

        What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against?
              -Larry Wall, 1992

Replies are listed 'Best First'.
Re^2: Too many arguments to connect-help?
by erix (Prior) on May 28, 2014 at 06:12 UTC

    DBD::mysql [...]

    it does not document if "dbi" in lower-case will be accepted.

    A DBD driver only prescribes the dsn-part after 'dbi:drivername:', and the DBI docs do document it; in fact, it actually does not document that uppercase DBI is accepted :-)

    DBI connect

    It says:

    The $data_source value must begin with "dbi:driver_name:". The driver_name specifies the driver that will be used to make the connection. (Letter case is significant.)
    update: (@NetWallah's below reply), yes I quite agree.
      So - the documented examples between the DBD and DBI modules conflict.

      However, the code in DBI.pm resolves this conflict - it says:

      sub connect { .... # extract dbi:driver prefix from $dsn into $1 $dsn =~ s/^dbi:(\w*?)(?:\((.*?)\))?://i or '' =~ /()/; # ensure $1 etc are empty if match fails
      so - it will accept EITHER case for the "DBI" part.

      The part about "(Letter case is significant.)" applies to the DBD driver name, not the the "DBI" or "dbi" - it will even accept "DbI".

              What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against?
                    -Larry Wall, 1992