所以。
对于我遇到的具体问题,也许这个标题太笼统了。
我有一个连接到 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。
我只是想知道是否有更聪明的方法可以做到这一点,所以我不必将数据库处理程序对象作为参数传递。
我想避免全局变量,我不觉得它们是瘟疫,在这种情况下它可能是合理的,但仍然如此。
非常感谢任何帮助或见解。
问候。