各位好,请教一个问题。最近写了一个subroutine,尝试了两种方法,主要区别是
子例程的返回值不同。一个是返回hash reference(方法1),一个是直接返回
hash(方法2)。在运行时感觉方法2会稍有停顿。因此,想问一个问题:方法2
中%fasseq在接收子 例程的返回值时是不是要复制一份结果,并不是直接操作子例
程中的那块内存地址?方法1中my %fasseq = %$fasseq;是不是直接把地址传
给%fasseq进行操作?应当如何设置这个返回值?
还有一个问题是:Perl自带的函数根据上下文的不同可以返回scalar或者list,自
己写子例程时如何实现
非常感谢!
On 2012-7-1 23:16, Robin Lee wrote:
> 要自己实现上下文相关的函数,就是靠 perldoc -f wantarray
>
>
> Perl 的函数实际上是无法返回 hash 值的,只能返回 scalar 和 list 。
> return %hash;
> 实际上是
> my @list = %hash;
> return @list;
>
> 所以,不要写返回 hash 的函数,要返回 hash 总是使用 reference。
>
> 2012/7/1 De-Jian
函数与参数列表间可以有空格,这在小骆驼中提到了。
$ perl -e ' print (2+3) x 3 '
5
$ perl -e ' print ((2+3) x 3) '
555
但是,sigil与变量名之间也可以有空格,这语法太灵活太松散了吧?
$ perl -e '$a=1; print $ a; '
1
$ perl -e '$a=1; print $ a + $ a; '
2
$ perl -e '$a=1; print $ a + $ ab; '
1
$ perl -e '$ a=1; print $a + $ a; '
2
Perl中如何来实现的?语句应当是根据分号
这个可以理解。我是想了解更多关于Perl语言本身机制的东西,不知道有没有什么
资料可推荐,能有下载链接就更好了。
On 2012-7-4 15:43, climby wrote:
> /这个就要讲到Perl的变量的命名规范了。变量只能以字符 或者下划线开头。/
> /显然空格是不能作为变量的开头的。因此 $ a = $a 的。 验证如下/
> /
> /
> /$perl -e '$a=1; print "true\n" if ($ a == $a)'/
> /true
> /
> 所以这个就很容易解释你所得到的那些结果了。 其实不是print函数参数列表中
> 空格的缘故哦。
>
>
>
算法非常巧妙!将数学问题转化成了文字匹配问题,正好发挥regex长处。
On 2011-11-26 18:22, Shou Ya wrote:
> 在perl1line上看到的:
>
>
> # Check if a number is a prime
> perl -lne '(1x$_) !~ /^1?$|^(11+?)\1+$/ && print "$_ is prime"'
>
>
> 分析了一下,它先把一��字符(�@�Y是'1')重�}多次,��成一��字串。
>
> 然後�δ���正�t表�_式�M行,匹配,那��正�t�碛�部分,前面是匹配'1'或者'',也就是��
背景:手机开通了上网功能,可以使用安卓平台下的ConnectBot程序ssh连接到
linux cluster上。想通过手机来进行一些操作,这样人身就比较自由,不必非待
在办公室了。
目的:通过手机上cluster,检查提交的计算任务是否完成,如果完成,则将结果
打包压缩,然后作为附件直接发送给别人,同时抄送一份到自己的 163邮箱,别人
回复邮件的时候回复到linux server邮箱,并且也抄送一份儿到我的163邮箱。
问题:使用sendmail无法发送邮件;在linux下不知道用哪个命令收邮件;不清楚
当前配置下还需不需要安装其他程序。
另外,这个cluster是