请教split函数的使用

请教split函数的使用

($number,mail)=(split(/\s+/,$_))[1,2], 后面的[1,2]是什么意思,做什么用的,

刚学习perl,有很多细小的东西不是很明白,还希望高手指教。谢谢


QUOTE:
原帖由 jun821 于 2008-12-24 15:44 发表
($number,mail)=(split(/\s+/,$_))[1,2], 后面的[1,2]是什么意思,做什么用的,

刚学习perl,有很多细小的东西不是很明白,还希望高手指教。谢谢

列表片段.
(split(/\s+/,$_))[1,2] 取split返回的列表的第2和第3个元素
3Q,很感谢!


QUOTE:
原帖由 jun821 于 2008-12-24 15:44 发表
($number,mail)=(split(/\s+/,$_))[1,2], 后面的[1,2]是什么意思,做什么用的,

刚学习perl,有很多细小的东西不是很明白,还希望高手指教。谢谢

嗯~这个句子是集中了蛮多东西,我分开来说明。这句话可以拆分开以下几句话:

[Copy to clipboard] [ - ]
CODE:
my @array=split(/\s+/,$_);  #首先要知道split 后返回的是一个数组
#接下来的赋值等同下面两种方式
{
    my $number=$array[1];
    my $mail=$array[2];
}
or
{
    my ($number,$mail)=@array[1,2]  #数组片断
}

while{<FH>}{
chomp;
($number,mail)=(split(/\s+/,$_))[1,2];
$Phone{$number}=$_;
$Email{$mail}=$_;
}

想知道$Phone{$number}=$_;或$Email{$mail}=$_;是怎么样赋值的,$_是怎么取值的?


QUOTE:
原帖由 jun821 于 2008-12-24 16:05 发表
while{}{
chomp;
($number,mail)=(split(/\s+/,$_))[1,2];
$Phone{$number}=$_;
$Email{$mail}=$_;
}

想知道$Phone{$number}=$_;或$Email{$mail}=$_;是怎么样赋值的,$_是怎么取值的?

赋值语句在while循环内。$_默认是读入的一行(去掉了换行符)


QUOTE:
原帖由 jun821 于 2008-12-24 16:05 发表
while{}{
chomp;
($number,mail)=(split(/\s+/,$_))[1,2];
$Phone{$number}=$_;
$Email{$mail}=$_;
}

想知道$Phone{$number}=$_;或$Email{$mail}=$_;是怎么样赋值的,$_是怎么取值的?

是while{<FH>} ?花括号?
打错了,是()小括号,这到没有什么,最重要的是,我知道while取一行的值放在$_中,但是就是不明白,$_的值是怎么赋给$Phone{$number}等的


QUOTE:
原帖由 jun821 于 2008-12-24 16:28 发表
打错了,是()小括号,这到没有什么,最重要的是,我知道while取一行的值放在$_中,但是就是不明白,$_的值是怎么赋给$Phone{$number}等的

$Phone{$number}=$_;是给散列%Phone中键值为$number的元素赋值。(跟给一个标量赋值时一样)

$Email{$mail}=$_;同理
恩,是的,但是$_的值应该是while读取FH中一行的值,而不是一个字符串。