2009年9月16日星期三

[PerlChina] Re: 有关File::Spec ->catfile

因为 $a 符合 perl 的变量命名规范并且不会引起歧义

2009/9/16 Michael Zeng <galaxy2004@gmail.com>
sorry , 现在才知道qw 不能内插, 记得以前可以的
 
qw/ $a  $b / 都是没用的, qw只接受 literal 直接量
 
改成print File::Spec -> catfile ( $a , "${b}_2"   ) ; 就通过了,
为啥 $a 不用引号呢,  
 

2009/9/16 cnhack TNT <cnhacktnt@gmail.com>
qw 不会做变量内插的操作的, qq 会,但是qq不会像 qw 那样按空格分隔返回包含多个元素的列表, 而请参看 perlop 中 Regexp Quote-Like Operators 章节中对于 qw 的描述

在你这个例子里,还是用 ($a, $b, $c ...) 这种方式吧:-)


2009/9/16 Michael Zeng <galaxy2004@gmail.com>
catfile 不是接受数组元素么
 
按理 qw/ a  b / =  ( "a" , "b")  啊
 


 
2009/9/16 cnhack TNT <cnhacktnt@gmail.com>

qw// 本身就没那个功能,你得用 qq//;

2009/9/16 Michael Zeng <galaxy2004@gmail.com>

怎么感觉catfile 接受参数数别挑剔?, 下面几种 都有点问题:
 
#!/usr/bin/perl

use strict ;
use warnings ;

use File::Spec ;


my $a = 'ccc' ;
my $b = 'ddd'  ;

print File::Spec -> catfile ( qw/ $a  $b / ) ;   #  得到 $a/$b  : my god  ,   为什么不变量替换呢?
 
编译失败:
print File::Spec -> catfile ( $a , $b_2  ) ;
 
编译失败:
print File::Spec -> catfile ( $a , ${b}_2  ) ;
 
只有这一种是对的:
print File::Spec -> catfile ( $a , $b ) ; 但是没法对 $a , $b进行微操作,
 
感觉catfile 只支持 ,  分割参数,而且不能带一些变量变化,真是太弱了吧?
 

perl 5.10 和5.8 都这样,win32 或unix ,

 

--
           Yours Sincerely
                   Zeng Hong







--
           Yours Sincerely
                   Zeng Hong







--
           Yours Sincerely
                   Zeng Hong




--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

没有评论: