in reply to dbCopy.pl

A few short points:

  • You can create a hash ref like this:
    $hr = { x => 1, y => 2 };

  • Don't use
    $$dbHash{connect}->prepare("$sql")
    when
    $db->{connect}->prepare($sql)
    is so much cleaner

  • Using:
    $str = join(',', ('?') x @{$row->[0]}))
    seems cleaner to me than
    $str = join (",",map {"?"}(0..$#{$rowRefs->[0]})

  • I like to call my statement handles $sth so I can remember what they are ($sth_insert, $sth_delete, etc if I need multiple ones).

  • why the main()? ... this isn't C :)

  • personally I don't like your functions that make the DBI calls (dbConnect & getData), they just seem to complicate things

  • Also this doesn't add any value than using mysqldump which has a lot more useful options.

    Hope this helps...

    gav^

  • Replies are listed 'Best First'.
    Re: Re: dbCopy.pl
    by abaxaba (Hermit) on Feb 04, 2002 at 05:04 UTC
      The hashref is passed to a sub. {} notation isn't quite so effective.

      Using $${ref} is a matter of style. I like $$ for straight refs, -> for obj. refs

      Forgot entirely about the 'x' operator. Much cleaner than map.

      $sth -- again, style preference. I like to know what's going on. query, insert, etc...

      main() keeps me from using globals. I write all of my code with pragma strict, so using subs for all of the code requires 'my' prefixes.
      sub dbConnect and getData were used to facilate looping. While not a golfer, I do try to write concise code.
      Forgive me for having the hubris to write perl code that facilates pre-existing mySql code. This is perlmonks. Not mySqlmonks.

        I'm not sure why the {} notation for creating a hash ref isn't effective.

        My point about the extra procedures is that they didn't add any value to the DBI calls, ie they didn't remove any repetitive code. I find procedures like that a bad thing because instead of seeing a $sth->fetchall_arrayref I have to scroll down to see what the procedure actually does.

        I wasn't intending my comments to be a harsh critisism, I just wanted to point out there might be a better alternative.

        gav^

          duh on my part. I could leave out the %$ and create a hashref with {} like you said. Extra documentation! :)
          The getData sub was just to compartmentalize the code.