免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2732 | 回复: 16
打印 上一主题 下一主题

各位大虾帮一把! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-01-13 11:21 |只看该作者 |倒序浏览
刚学了两天perl, 问下各位大虾下面几个语句的意思


chomp( @buf = <>; ) ;
($ip) = ( $buf[10] =~ /Framed-IP-Address\s*=\s*(\d+\.\d+\.\d+\.\d+)/ ) ;

在这里$ip的值是什么,是在$buf[10]中找到的(\d+\.\d+\.\d+\.\d+)/ )吗?
例如ip=192.168.1.1

$hstr =~ s/(.)/sprintf("%02x",ord $1)/eg ;
这里是指将@hstr中的16进制数字符转换成对应字符的ASCII码吗?

($pw) = ( $buf[10] =~ /Ascend-Send-Passwd\s*=\s*"(.+?)"/ ) ;
这里$PW的值是不是找到的(.+?)例如pw =; $pw = abc;(.+?)是指0个或多个任意字符(换行不算)吧?

$buf[2] =~ s/\.$/-out/ ;
这里是将$buf[2]中的最后一个"."字符换成"-out"吗?

我不知道理解得如何,忘各位指正,谢谢!

论坛徽章:
0
2 [报告]
发表于 2005-01-13 12:14 |只看该作者

各位大虾帮一把!

基本上都是正则的问题,找learnning perl看就可以了

第二个是将$1($hstr中的任意字符)的ascii码值转化为十六进制
其他的基本理解正确

论坛徽章:
0
3 [报告]
发表于 2005-01-13 14:24 |只看该作者

各位大虾帮一把!

谢谢你的回复!
你说的书我也看过了, 我找了不少网上的资料, 对ord持描述都是:
函数名        ord
调用语法        asciival = ord (char);
解说        返回单个字符的ASCII值,与PASCAL中同名函数类似。
下面的代码:
$hstr = "outbound:addr=$ip" ;
$hlen = length($hstr) ;
$hstr =~ s/(.)/sprintf("%02x",ord $1)/eg ;

你的意思是说先用ord将$hstr的所有字符转换为ASCII码后,再由sprintf()这个
函数将其全转换为16进制数, 要是这样的话我觉得好像说不通呀
如果$ip的值为 192.168.1.1那$hstr的值为 outbound:addr=192.168.1.1
要是全换的话那结果是什么? 刚学两天, 有不少地方还不是很了解,说错的地方还忘指正,谢谢啦!

论坛徽章:
0
4 [报告]
发表于 2005-01-13 14:38 |只看该作者

各位大虾帮一把!

才刚接触perl, 现在下了" Perl Builder 2.0"但还不会用
要不运行下就知道结果了, 现在只能纸上谈兵了
在xp系统用哪个perl编译工具好些呀

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2005-01-13 14:38 |只看该作者

各位大虾帮一把!

请将标题修改得更加有意义一些。

论坛徽章:
0
6 [报告]
发表于 2005-01-13 15:00 |只看该作者

各位大虾帮一把!

我也是刚学的,你用ActivePerl 看看,希望对你有帮助

论坛徽章:
0
7 [报告]
发表于 2005-01-13 15:12 |只看该作者

各位大虾帮一把!

我看到很多文章建议不要用ActivePerl
所以没下,也不知XP系统能不能用

论坛徽章:
0
8 [报告]
发表于 2005-01-13 17:24 |只看该作者

各位大虾帮一把!

ActivePerl  在xp可以用的,有什么不好?

论坛徽章:
0
9 [报告]
发表于 2005-01-13 22:57 |只看该作者

各位大虾帮一把!

第二个是将$1($hstr中的任意字符)的ascii码值转化为十六进制,显示为2位数,不足二位的前面用0补足

论坛徽章:
0
10 [报告]
发表于 2005-01-14 09:04 |只看该作者

各位大虾帮一把!

多谢各位帮忙!
($ip) = ( $buf[10] =~ /Framed-IP-Address\s*=\s*(\d+\.\d+\.\d+\.\d+)/ ) ;
$ip = ( $buf[10] =~ /Framed-IP-Address\s*=\s*(\d+\.\d+\.\d+\.\d+)/ ) ;
这两句有什么区别?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP