-6

我想在 perl 脚本中打开一个(IP 地址或网络链接)并将属性用户名的值传递给该 IP 地址或网络链接。请在我的以下 perl 脚本中添加必要的配置行并附上解释。

注意:在下面的脚本中,要执行一个 exe 文件,我现在不想要这个。相反,请将其替换为打开 ipaddress/weblink 的配置,然后将属性“username”的值传递给此链接或 IP。

#!/usr/bin/perl
use warnings;
use strict;
my $p;

print "Hello Radiator is executing the exe file via TKs perl scripting \n";

my $user_name = $p->getUserName;
open my $EX1_PIPE, '|-', "exelocation\file.exe $user_name" 
            or die "location\file.exe $!\n";

print $EX1_PIPE "$_\n" for ($user_name);

close $EX1_PIPE or die $!;

谢谢,托马斯

4

1 回答 1

2

您提供的脚本不起作用。

  1. $p是未定义的。调用该变量的方法后,您将立即收到错误消息。
  2. 该字符串"\f"将包含换页符,而不是字符序列反斜杠-f。反斜杠引入了转义序列,如果没有这样的转义序列,反斜杠将被忽略。请使用正斜杠分隔路径,即使在 Windows 上也是如此。
  3. $username直接插入到命令字符串中。使用更多参数会更好open;即使$username包含空格,这也将有更好的工作机会:

    open my $EX1_PIPE, "|-", "exelocation/file.exe", $username or die ...;
    
  4. 您的for ($username)陈述没有意义,因为您正在对一个值使用循环。直接做print {$EX1_PIPE} "$username\n"

要打开 HTTP 连接,我建议使用LWP库。您可以使用LWP::UserAgent模块进行复杂的操作,或者使用LWP::Simple轻松GET创建文档。您可能希望将用户名作为查询字符串中的参数传递;查看URI::Escape或类似模块以转义任何特殊字符。

代码最终的外观将取决于 HTTP 服务的接口。

通常,您的工作流程将如下所示:

  1. 创建一个用户代理实例
  2. 转义用户名,并构造 URL
  3. 获取该地址
  4. 检查有效响应,并返回解码结果。

有关示例,请参阅模块的文档。

于 2013-03-07T12:43:33.700 回答