为什么我需要在下面的perl衬里中使用牙套?

前端之家收集整理的这篇文章主要介绍了为什么我需要在下面的perl衬里中使用牙套?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我看到一个perl one liner生成一些8个字符的随机字符串:

perl -le’print map {(“a”..“z”)[rand 26]} 1..5′

但如果没有地图的{},这不起作用.这是为什么?

解决方法

perldoc -f map. map有两种形式:map({block} @array)和map(expression,@ array).后一种形式可以像这样使用:
perl -le 'print map(("a".."z")[rand 26],1..5)'
perl -le 'print map +("a".."z")[rand 26],1..5'

原因

perl -le 'print map ("a".."z")[rand 26],1..5'

不起作用是因为它解析像

perl -le 'print(((map("a".."z"))[rand(26)]),1..5)'

换句话说,“a”..“z”成为map的唯一参数,这是无效的.这可以通过一组额外的括号或一元来消除歧义.

原文链接:https://www.f2er.com/Perl/241657.html

猜你在找的Perl相关文章