请教split函数的使用

哈哈,是可以,我也不知道为什么,也许是在window下,字符的问题吧,很感谢你,谢谢

#!/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]]


QUOTE:
原帖由 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都能查到整个记录吧
刚发现个问题,是不是散列可以赋值给数组,可是数组赋值给散列好像就不行。可是书上说是可以互相转换的
例:
#! 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"------就可以得到想要的结果



QUOTE:
原帖由 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");
...

散列不能在双引号中展开
是可以了,但是为什么
例:#! 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',最后的结果不一样,只有去掉了双引号或单引号,才能得到自己想要的结果



QUOTE:
原帖由 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 ...

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