perl - 我如何在 Perl 5.8.8 中使用 'say'?

标签 perl file bash search

我被分配到一个项目 (PHP/MySQL),需要一些审查和可能的修复。

作为其中的一部分,计划检查我们通过 GET 和 POST 获得的所有变量的正确性。我们有一堆 PHP (.php) 和 Smarty (.tpl) 文件包含数千行代码,因此手动搜索所有 $_GET[...] 和 $_POST[...] 引用会很痛苦。所以我尝试这样做:

find . -name "*.php" -or -name "*.tpl" |
xargs perl -ne 'use feature say; say $1 while m/(\$_(GET|POST)\[[\s]*[\S]+[\s]*\])/g;' |
sort -u

基本上它会创建项目中所有 $_GET[...] 和 $_POST[...] 引用的列表,然后从中删除重复的值。但它没有用,因为我的开发机器上有 Perl 5.8.8,它不支持 5.10+ 功能“说”,我们的系统管理员说升级是不需要的。我不确定为什么,但他是老板。

那么,有没有办法用其他代码替换“say”,或者甚至用其他工具替换 Perl?

最佳答案

不要忘记模拟 say 非常容易:

sub say { print @_, "\n" }

只需将它添加到 Perl 代码的开头并像往常一样使用。

关于perl - 我如何在 Perl 5.8.8 中使用 'say'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8260972/

相关文章:

regex - 在使用 Perl 进行搜索和替换期间,如何附加而不是替换文本?

perl - Perl 代码中的依赖关系

perl - Perl 是否在可存储写入期间安全地延迟 INT 信号?

macos - 检测文件/文件夹的删除和添加 cocoa

bash - 在第二台服务器上嵌套 ssh 运行命令

bash - 在 Bash 中将 clear 绑定(bind)到 ^l

regex - perl 中的正则表达式和重复字符类

c# - IFormFile 在 dotnet core 2.0 上始终返回 Null 值

c# - 无法将字符串数组正确转换为 double 组,返回 0

linux - 如何在不运行 Bash 脚本的情况下检查语法?