Perl Script返回值作为第二个perl脚本的输入

时间:2011-11-21 06:46:19

标签: perl variables

我需要编写一个解析密码文件的脚本getPwd.pl($user),并返回特定用户的密码。

要解析的文件(password.txt)

DEFINE ALICE = 'alice#1';
DEFINE BENICE = 'benice#1';
DEFINE CATHY = 'cathy#1';

第二个脚本authUser.pl必须调用getPwd.pl($user),并且返回的值将传递到第二个脚本以验证用户。

模块不是一个选项,因为getPwd.pl将由其他用户拥有,我将使用sudo来执行getPwd.pl

请协助并就如何解决此问题提供一些指导。

2 个答案:

答案 0 :(得分:1)

我同意整个系统应该修复。如果你能执行sudo那么你当然有能力解决这个问题!

然而,要回答实际问题,最好的办法是将getPwd.pl作为一个命令调用(而不是像上面所示的函数)。

my $pwd = `getPwd.pl $user`

然后将$ pwd参数作为响应。

但是,如果您至少可以将其他文件作为模块或源文件,那么您的状况会更好。

答案 1 :(得分:0)

您只需打印从密码文件中提取的值,然后使用反引号或qx()在授权脚本中捕获它。 E.g:

my $pass = qx(/path/to/password.pl cathy);

密码脚本可能很简单:

my $name = shift;
open my $fh, '<', '/path/to/password.txt' or die $!;
while (<$fh>) {
    /^DEFINE $name =/i && last; # Optional /i modifier for case insensitive match
}

if ($_ && /^DEFINE $name = '([^']+)'/) { # Must check $_ is not empty
    print $1;
}