免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: bestnet009
打印 上一主题 下一主题

关于 =~ s/../../g 转换的问题 [复制链接]

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
11 [报告]
发表于 2009-07-29 09:27 |只看该作者
原帖由 linuxty 于 2009-7-29 09:22 发表



还是不行的,这样直接就把$aa 赋值成字符串 $1$2$3 了

oops,再把下一行的 /g 换成 /gee.

[ 本帖最后由 MMMIX 于 2009-7-29 09:34 编辑 ]

论坛徽章:
0
12 [报告]
发表于 2009-07-29 09:41 |只看该作者
原帖由 MMMIX 于 2009-7-29 09:27 发表

oops,再把下一行的 /g 换成 /ge.


老大  还是不得行  还有什么要注意的 ....

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
13 [报告]
发表于 2009-07-29 09:47 |只看该作者
原帖由 linuxty 于 2009-7-29 09:41 发表


老大  还是不得行  还有什么要注意的 ....

OK, the final answer:


  1. $cc = '$3 . $2 . $1';
  2. $ss =~ s/$ab/$cc/ee;
复制代码

论坛徽章:
0
14 [报告]
发表于 2009-07-29 09:49 |只看该作者
喔  明白了 谢谢老大

[ 本帖最后由 linuxty 于 2009-7-29 09:53 编辑 ]

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
15 [报告]
发表于 2009-07-29 09:51 |只看该作者
原帖由 linuxty 于 2009-7-29 09:41 发表


老大  还是不得行  还有什么要注意的 ....

This works too:


  1. $cc = '"$3$2$1"';
  2. $ss =~ s/$ab/$cc/ee;
复制代码

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
16 [报告]
发表于 2009-07-29 09:52 |只看该作者
原帖由 linuxty 于 2009-7-29 09:49 发表
replacement的分隔符是单引号时,作为单引号字符串,不会进行变量赋值.
/e修饰符是不是也要要求replacement不是单引号字符串 ?

嘛意思?

论坛徽章:
0
17 [报告]
发表于 2009-07-29 09:54 |只看该作者
原帖由 MMMIX 于 2009-7-29 09:52 发表

嘛意思?


想错了 发了帖才看到你发的帖  恍然大悟   嘻嘻

论坛徽章:
0
18 [报告]
发表于 2009-07-29 10:05 |只看该作者
/ee 是对求值的结果再求值,在这就是对 $c 替换成 $1$2$3 后再替换成匹配的值.

$c='$1$2$3'  $c='$1.$2.$3'  $c='"$1$2$3"' 3种方式.

为什么第1种不能替换,而2和3种可以替换也?

论坛徽章:
0
19 [报告]
发表于 2009-07-29 10:26 |只看该作者

回复 #18 linuxty 的帖子

/e是把//内的当作一段代码执行,第一个里面没有操作符,想一下假设$a$b$c放在一起执行会不会有问题,中间没有操作符连接,
第二个就不用说了,用.操作符连接了。第三个的话吧$1$2$3一起当作了一个字符串。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
20 [报告]
发表于 2009-07-29 10:28 |只看该作者
原帖由 linuxty 于 2009-7-29 10:05 发表
/ee 是对求值的结果再求值,在这就是对 $c 替换成 $1$2$3 后再替换成匹配的值.

$c='$1$2$3'  $c='$1.$2.$3'  $c='"$1$2$3"' 3种方式.

为什么第1种不能替换,而2和3种可以替换也?

其实这个错误信息已经说得很明白了。

最后执行的实际是 eval $1$2$3, 那么这里的 $1$2$3 是什么意思呢?它不在字符串中,所以不存在插值,因此 perl 将它理解为一个 expression,那么就需要 operator,找不到,所以报错。针对这个错误的修改就是后两种情况了,要么增加 operator .,使得 $1 . $2 . $3 成为一个合法的 expression, 或者把 $1$2$3 放在字符串中进行插值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP