SUSE Linux Enterprise中的perl $ filename与./$filename

时间:2013-05-30 15:12:03

标签: linux perl

学生实习在学校的Linux系统上工作,回到另一个问题。有关背景信息,请阅读以下问题:(How to test an HTTP header value using LWP::UserAgent)。

在完成其他一些项目后,我在这方面取得了更多进展。我刚刚注意到的一件事是,如果我使给定的脚本可执行(使用chmod),我不再得到我在第一个问题中提到的下载错误。奇怪的是(对我而言)是,如果我将文件作为perl $filename运行,我会得到模糊,无益的下载错误,而如果我将其作为./$filename运行则可以正常工作。

有谁知道为什么会这样?随意请求更多澄清,但希望阅读我的其他问题将有助于此。谢谢!

编辑:我道歉!这个问题在我的脑海中仍未解决(我将研究潜在的路径问题),尽管我通过./script.pl进行了解决方法。以下是尝试获取文件时返回的确切错误消息:

500 Can't connect to $url.org:443 (SSL connect attempt failed with unknown error error:00000000:lib(0):func(0):reason(0))

2 个答案:

答案 0 :(得分:11)

使用perl foo将使用foo中找到的第一个perl运行$PATH

使用./foo将运行foo,无论脚本的第一行是否应该运行(例如#!/opt/perlbrew/perls/perl-5.16.2/bin/perl -w)。

使用不同版本(和模块版本)可以提供不同的结果,可以使用不同的命令行开关运行

答案 1 :(得分:0)

没有太多信息可以继续;-)但是,考虑到你之前发布在(How to test an HTTP header value using LWP::UserAgent)上下文中的这个问题,至少看起来你可能正在加载不同版本的LWP的SSL库(Crypt::SSLeay)。这可能发生,因为许多事情取决于您使用的路径和/或命令行开关。例如,Crypt::SSLeay包含一个C代码库,需要针对模块的当前版本和perl重新编译。也许您在轻轻地键入./script.pl时通过运行perl script.pl和破坏版本来加载正确的版本(意外)?

如果您发现了正在发生的事情,请更新您的问题: - )