首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的Perl一行程序报告"Bareword找到操作员期望的位置“?

为什么我的Perl一行程序报告"Bareword找到操作员期望的位置“?
EN

Stack Overflow用户
提问于 2010-10-13 21:08:58
回答 2查看 1.7K关注 0票数 0

我想将块大小转换为MB。我在替换中使用了/e选项。当我在替换部分中添加起始MB时,它会给我错误。

例如:

这是可行的。

代码语言:javascript
复制
 echo "16777216 SELECT" |perl -lane 's#(\d+)(\s+SELECT)#$1/(1024*1024*2)#e; print'
8

这给了我错误。

代码语言:javascript
复制
echo "16777216 SELECT" |perl -lane 's#(\d+)(\s+SELECT)#$1/(1024*1024*2) MB $2#e; print'
Bareword found where operator expected at -e line 1, near ") MB"
        (Missing operator before MB?)
syntax error at -e line 1, near ") MB "
Execution of -e aborted due to compilation errors.

能帮我修好第二个吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-13 21:15:56

perl开关将替换表达式转换为正则/e表达式。您需要引用' MB'并使用连接(.)。

代码语言:javascript
复制
's#(\d+)(\s+SELECT)#$1/(1024*1024*2) . q[ MB] . $2#e

应该行得通。

票数 3
EN

Stack Overflow用户

发布于 2010-10-13 21:13:13

变化

代码语言:javascript
复制
(1024*1024*2) MB $2

代码语言:javascript
复制
(1024*1024*2)."MB".$2

/e修饰符告诉引擎将替换字段视为Perl代码。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3923967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档