perl - 有些东西没有打印
问题描述
我想知道没有打印“00”的原因:
my @compass_points = ('north', 'east', 'south', 'west');
my $direction = 'north-east';
unshift @compass_points, $direction;
# @compass_points contains: north-east, north, east, south and west
print ($west = pop @compass_points)."00";
print "11";
push @compass_points, $new_direction; # put $west back
print @compass_points;
解决方案
如果有警告,Perl 会告诉你的。
它将后面的括号解释print
为围绕它的参数,因此将00
附加到返回值print
并丢弃,因为打印出现在 void 上下文中。
将所有参数包装到一对新的括号中
print(($west = pop @compass_points) . '00');
或用于+
告诉解析器括号引入了一个表达式:
print +($west = pop @compass_points) . '00';
您还可以利用 print 采用几个参数:
print $west = pop @compass_points, '00';
推荐阅读
- python - django qsstats 中的时间序列问题
- c++ - unique_ptr 中的奇怪段错误
- arrays - 处理加权概率
- vue.js - 重置值时Vuejs计数器条件不起作用
- html - 标题在可重复使用的 HTML 内容块中用于 WYSIWYG 编辑器和 WCAG 有意义的序列
- matlab - Matlab:ButtonDown事件如果在keyPress之后不会触发
- powershell - powershell 重命名脚本 - 主要是功能性的,希望完成并完全自动化任务
- react-native - 在 react-native 导航中更新参数
- vba - Word VBA ChangeFileOpenDirectory - 网络路径
- python - 字典更新序列元素#0 有长度