while(<FILE>) {
  my @str = split / /;
  my $pt = {}; # 如果$pt是hash。如果是对象可以new一个新的
  $pt->{pga}=$str[0];
  $pt->{mmi}=$str[1];
  push @grid, $pt;
}

On Sun, 2009-01-11 at 15:15 +0800, junli.linux wrote:
> 那如果我要把文件的每一行都push进去,且每一行有好几个值,每个值用空格分
> 开的,我该怎么做才能不只是push最后一行呢?
> 也就是说怎么读一行,改变一个pt的指针地址?
> 谢谢
>  
> 2009-01-11 
> 
> ______________________________________________________________________
> junli.linux 
> 
> ______________________________________________________________________
> 发件人: Changying Li 
> 发送时间: 2009-01-10  16:43:00 
> 收件人: perlchina 
> 抄送: 
> 主题: [PerlChina] Re: 关于push的一个问题 
> 
> "junli.linux" <[email protected]> writes:
> 
> > 我的脚本:
> > open(FILE,$filename)
> > while($line=<FILE>)
> > {
> > @str=split(/ /,$line);
> > $pt->{pga}=$str[0];
> > $pt->{mmi}=$str[1];
> > push @grid,$pt;
> 这里push的是$pt,一个指针,下一个循环还是push的同一个指针,所以多次 push
> 的
> 数据是一样的 , 都是同一个指针,指向同一个位置,这个位置就是你不断的在
> 赋
> 值的地方,到最后,只保留了一个值---文件的最后一行.
> 
> > }
> > close(FILE)
> > foreach $pt(@grid)
> > {print "$pt->{pga}   $pt->{mmi}\n";}
> >
> >
> > 问题是结果只print出来 FILE里面的最后一行数据。不知道哪里出了问题。。
> 大家帮忙看看。
> >
> > >
> 
> -- 
> 
> Thanks & Regards
> 
> Changying Li
> 
> 
> 
> > 
> 


--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛“PerlChina 论坛”论坛。
 要在此论坛发帖,请发电子邮件到 [email protected]
 要退订此论坛,请发邮件至 [email protected]
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

回复