跪求高手解答循环语句问题

yangyun87 2015-08-30 02:24:12
由于工作需要,自学perl用win32::gui写了一个小工具,通过addtextfield获取主机名称和主机ip地址,然后判断主机名称和ip地址是否存在,如果不存在就增量写入到文件中。
现在有2个问题,1.脚本是ansi编码,运行时无法识别中文输入,2.无法判断主机名称或ip地址是否已存在。
求大神分析下,跪谢

代码如下:

my $value = $input->{'-text'};
my $value1 = $input1->{'-text'};
my @items;
my @items1;
my $hostname;
my $host;

if($value == "" || $value1 == ""){
Win32::MsgBox('请输入完整,不要留空!', MB_ICONINFORMATION, '错误');
return 0;
}

@item = $value1 =~/\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5
]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/;
$f1 = $item[0];
if($f1 == ""){
Win32::MsgBox('IP地址输入错误!', MB_ICONINFORMATION, '错误');
return 0;
}

my $temp_file = "host.y";
my $totalhost = 0;
if ( -e $temp_file ) {
open(HOST, "host.y");
while(<HOST>){
chomp();
@items=split(/\-/);
$hostname=$items[0];
$host=$items[1];
@items1=split(/\./,$host);

if($value == $hostname || @item ~~ @items1){
Win32::MsgBox('该设备已经存在!', MB_ICONINFORMATION, '错误');
return 0;
}
else{
open (X,">>host.y");
my $string = "$value-$value1\n";
print X $string;
$totalhost++;
select ((select (X), $|++)[0]);
}
last if($totalhost == 1);
}
close(HOST);
}
else {
open (X,">host.y");
my $string = "$value-$value1\n";
print X $string;
select ((select (X), $|++)[0]);
}
...全文
81 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧