+ -
当前位置:首页 → 问答吧 → 关于子程序的内插问题.

关于子程序的内插问题.

时间:2011-07-05

来源:互联网

  1. #!/usr/bin/perl
  2. use warnings;
  3. use strict;
  4. sub Getgwip{
  5. my $cmd = "route -n";
  6. my @route = `$cmd`;
  7. my $gwip;
  8.         foreach (@route){
  9.                 $_ =~ s/^\s+//g;
  10.         $gwip=(split /\s+/,$_)[1] if $_ =~ m/^0/;
  11. }
  12.         return $gwip;
  13. }
  14. sub Getgwmac{
  15.         my $cmd = "arp -a &Getgwip()";
  16.         my $arp = `$cmd`;
  17.         my $mac;
  18.         $mac=(split /\s+/,$arp)[3];
  19.         return $mac;
  20. }
  21. sub bond_ip_mac{
  22.         my $cmd = "arp -s Getgwip()  Getgwmac";
  23.                 `$cmd`;
  24. }
  25. bond_ip_mac();
复制代码
就是一个很普通的arp绑定小脚本.  $cmd = "arp -a &Getgwip()"   $cmd = "arp -s &Getgwip() &Getgwmac"   这样写 肯定是不对的..我想问程序名能这样做内插吗?
麻烦请帮忙修改一下..谢谢了.

作者: klathleen   发布时间: 2011-07-05

my $cmd = "arp -a " . &Getgwip();

作者: jason680   发布时间: 2011-07-05

只有 $ @ 开头的形式可以插入字符串。你可以用 . 做字符串连接,或者 sprintf 再或变态点的 @{[]}

作者: zhlong8   发布时间: 2011-07-05

哦.. 明白了..呵呵  谢谢 你们了...

作者: klathleen   发布时间: 2011-07-05