也许标题显得过于宽泛,我在具体问题。
我有一个连接到SQLite数据库Perl脚本。在运行期间,我执行了很多数据库操作,例如SELECT,INSERT,UPDATE等。我将每个数据库操作都包装在其自己的子例程中(主要是为了隐藏SQL语句以及对结果集的任何额外处理)。
我要使用同一个数据库处理程序对象每次我需要调用这个数据库操作子程序的一次,所以我一直在做的是通过数据库处理程序对象作为参数。例如:
my $dbh = DBI->connect("dbi:SQLite:dbname=db.db", "", "") or die;
sub select_from_systems {
my $dbh = shift;
return $dbh->selectcol_arrayref("SELECT hostname FROM systems");
}
正如旁注,我使用Perl DBI。
我只是想知道是否有一个更聪明的方式来做到这一点,所以我不必须通过数据库处理程序对象作为参数。
我想避免全局变量,我不觉得他们是瘟疫,在这种情况下,它可能是合理的,但仍。
任何帮助或洞察力非常感谢。
问候。
感谢一些选项。鉴于我的代码的状态和截止日期,我将与您的第二个解决方案,我们的范围别名一起去。它只是适合becasue我发现相当麻烦是通过这样的说法,每一次,我已经知道这是什么我只需要它在子程序的范围。非常感谢您的时间! – romeroqj