免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: jun821
打印 上一主题 下一主题

请教split函数的使用 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2008-12-25 12:05 |只看该作者
#!/usr/bin/perl

open (PH, "test.split.txt") or die "Cannot open test.split.txt!\n";

while (<PH>) {
    chomp;

    ($number,$mail)=(split(/\s+[()]?/,$_))[1,2];
    $Phone{$number}=$_;
    $Email{$mail}=$_;
}
close PH;

foreach(keys %Phone)
{
  print "\$number:\t$_\n";
  print "\$Phone{\$number}:$Phone{$_}\n";
}

我改进了一下,把所以的$number都给打印出来了,不过不明白为什么给
$Phone{$number},$Email{$mail}设置同样的值,而且还是读进来的整行的内容

[[i] 本帖最后由 HawaiiLeo 于 2008-12-25 12:06 编辑 [/i]]

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
22 [报告]
发表于 2008-12-25 12:10 |只看该作者
原帖由 HawaiiLeo 于 2008-12-25 12:05 发表
#!/usr/bin/perl

open (PH, "test.split.txt") or die "Cannot open test.split.txt!\n";

while () {
    chomp;

    ($number,$mail)=(split(/\s+[()]?/,$_))[1,2];
    $Phone{$number}=$_;
     ...

想通过$number, $mai都能查到整个记录吧

论坛徽章:
0
23 [报告]
发表于 2008-12-25 13:54 |只看该作者
刚发现个问题,是不是散列可以赋值给数组,可是数组赋值给散列好像就不行。可是书上说是可以互相转换的
例:
#! perl -w
@a=qw(one two three four five six);
%c=(aaa=>"a",bbb=>"b",ccc=>"c",ddd=>"d");
%b=@a;
@d=%c;
print "%b\n";
print "@d\n";

发现print "%b\n";-------最后的结果就是%b,而print "@d\n"------就可以得到想要的结果

[ 本帖最后由 jun821 于 2008-12-25 13:58 编辑 ]

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
24 [报告]
发表于 2008-12-25 14:33 |只看该作者
原帖由 jun821 于 2008-12-25 13:54 发表
刚发现个问题,是不是散列可以赋值给数组,可是数组赋值给散列好像就不行。可是书上说是可以互相转换的
例:
#! perl -w
@a=qw(one two three four five six);
%c=(aaa=>"a",bbb=>"b",ccc=>"c",ddd=>"d");
...

散列不能在双引号中展开

论坛徽章:
0
25 [报告]
发表于 2008-12-25 14:40 |只看该作者
是可以了,但是为什么
例:#! perl
@Date=qw(one two three four five sir);
%a=@Date;
%c=(aaa=>'a',bbb=>'b',ccc=>'c',ddd=>'d');
@d=%c;
print %a;
print "@d\n";


这样的一个程序,print %a or print "%a"  or print '%a',最后的结果不一样,只有去掉了双引号或单引号,才能得到自己想要的结果

[ 本帖最后由 jun821 于 2008-12-25 14:47 编辑 ]

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
26 [报告]
发表于 2008-12-25 15:13 |只看该作者
原帖由 jun821 于 2008-12-25 14:40 发表
是可以了,但是为什么
例:#! perl
@Date=qw(one two three four five sir);
%a=@Date;
%c=(aaa=>'a',bbb=>'b',ccc=>'c',ddd=>'d');
@d=%c;
print %a;
print "@d\n";


这样的一个程序,print %a o ...

双引号中只对标量或数组值的变量进行代换

论坛徽章:
0
27 [报告]
发表于 2008-12-25 15:45 |只看该作者
很感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP