从Perl脚本到Sybase DB的连接问题

从Perl脚本到Sybase DB的连接问题,perl,sybase,Perl,Sybase,我必须将我的Perl脚本连接到新构造的Sybase服务器版本-16.0.03.08.1019 Error - login Failed (due to encrypt password issue) 之前,脚本是用Perl编写的: $conn = Sybase::DBlib->new($user,$pass,$server,"$dbase Handle"); $conn->sql("use $dbase"); 我在网上搜索了每一个写密码的

我必须将我的Perl脚本连接到新构造的Sybase服务器版本-16.0.03.08.1019

Error - login  Failed (due to encrypt password issue)
之前,脚本是用Perl编写的:

$conn = Sybase::DBlib->new($user,$pass,$server,"$dbase Handle");
$conn->sql("use $dbase");
我在网上搜索了每一个写密码的地方,把它放到
EncryptPassword=1

我尝试了以下两种方法,但都没有成功

$conn = Sybase::DBlib->new($user,$pass,$server,"$dbase Handle","EncryptPassword=1");
我的问题是,在Perl脚本中在哪里使用
EncryptPassword=1
。我是否在正确的位置使用它。

哇这让我回想起过去。当我上一次使用DBlib时(大约在1995年),我清单上的任务之一是用替换DBlib的所有用法-这是Sybase旨在替换DBlib的新技术。此后不久,该系统又被重写为使用and-这是二十多年来从Perl程序与Sybase数据库对话的推荐方式。您将注意到,的最新版本(包含Sybase::DBlib和Sybase::CTlib的CPAN发行版)是十多年前发布的。我很确定Sybase从本世纪初开始就不支持DBlib了

因此,请记住,您使用的是基本上已经过时且不应该使用的古老技术,有什么方法可以在不重写整个系统的情况下帮助您呢

也许吧

查看的文档,我看到了如何编写对
new()
的调用的示例:

忽略这一事实,它使用的是任何rational程序员都会避免的
new Class
语法,
Class->new()
版本如下:

$dbh = Sybase::DBlib->new([$user [, $pwd [, $server [, $appname [, {additional attributes}]]]]])
请注意末尾的“附加属性”字段。我打赌那是你的东西需要去的地方。还要注意的是,它是
{additional attributes}
——因此它看起来需要一个散列引用

因此,您可能需要的语法是:

$conn = Sybase::DBlib->new($user, $pass, $server, "$dbase Handle", {
  EncryptPassword => 1,
});
请注意,这其中有大量的警告。不仅如此,鉴于Sybase::DBlib已经不受支持十年了,如果它根本不支持加密密码,我一点也不会感到惊讶

但它可能会起作用。这可能是你最大的希望

请尽一切可能更新您的代码库,以使用长期以来不受支持的工具和库

$dbh = Sybase::DBlib->new([$user [, $pwd [, $server [, $appname [, {additional attributes}]]]]])
$conn = Sybase::DBlib->new($user, $pass, $server, "$dbase Handle", {
  EncryptPassword => 1,
});