在perl脚本中打开IP地址或Web链接并将值传递给它

时间:2013-03-07 12:00:49

标签: perl

我想在perl脚本中打开(IPaddress或web链接),并将属性username的值传递给此ipaddress或weblink。请将必要的配置行添加到我的以下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 $!;

谢谢,托马斯

1 个答案:

答案 0 :(得分:2)

您提供的脚本不起作用。

  1. $p是undef。一旦在该变量上调用方法,就会出现错误。
  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"
  5. 要打开HTTP连接,我建议使用LWP库。您可以使用LWP::UserAgent模块进行复杂操作,也可以使用LWP::Simple轻松GET文档。您可能希望将用户名作为参数传递给查询字符串;查看URI::Escape或类似的模块以逃避任何特殊字符。

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

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

    1. 制作用户代理实例
    2. 转义用户名,并构建网址
    3. 获取该地址
    4. 检查有效响应,并返回解码结果。
    5. 请参阅模块文档以获取示例。