免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3803 | 回复: 14
打印 上一主题 下一主题

eval请教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-17 09:35 |只看该作者 |倒序浏览
#!/usr/bin/sh
eval '/usr/local/bin/users/standard/build36/perl5
-wS $0 ${1+"$@"}' if 0;

在PERL技术内幕中看到这么一段,
不知道什么意思

eval不是抛出异常吗,这里何用

论坛徽章:
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
2 [报告]
发表于 2008-12-17 09:38 |只看该作者

回复 #1 bitterness 的帖子

man sh and search 'eval' in it
perldoc -f eval

[ 本帖最后由 MMMIX 于 2008-12-17 10:33 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-12-17 09:56 |只看该作者
谢谢
      eval EXPR
       eval BLOCK
               In the first form, the return value of EXPR is parsed and executed as if it
               were a little Perl program.

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2008-12-17 10:09 |只看该作者
原帖由 MMMIX 于 2008-12-17 09:38 发表
perldoc -f eval

这里的 eval 是双关语。同时还需要了解一下 Shell 的 eval 才行。

论坛徽章:
0
5 [报告]
发表于 2008-12-17 10:20 |只看该作者

回复 #4 flw 的帖子

shell下,我只知道eval 后可以跟一个表达式,

论坛徽章:
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
6 [报告]
发表于 2008-12-17 10:22 |只看该作者
原帖由 flw 于 2008-12-17 10:09 发表

这里的 eval 是双关语。同时还需要了解一下 Shell 的 eval 才行。

看岔了 是 Shell 的 eval,不是 Perl 的

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2008-12-17 10:25 |只看该作者
原帖由 MMMIX 于 2008-12-17 10:22 发表

看岔了 是 Shell 的 eval,不是 Perl 的

不,这里的 eval 是双关语,既是 Shell 的,也是 Perl 的。

论坛徽章:
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
8 [报告]
发表于 2008-12-17 10:34 |只看该作者
原帖由 flw 于 2008-12-17 10:25 发表

不,这里的 eval 是双关语,既是 Shell 的,也是 Perl 的。

不过 Perl 的这个不会被执行。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2008-12-17 10:36 |只看该作者
原帖由 MMMIX 于 2008-12-17 10:34 发表

不过 Perl 的这个不会被执行。

嗯,但是必须得是正确的函数名称,否则编译不过去。

论坛徽章:
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
10 [报告]
发表于 2008-12-17 10:51 |只看该作者
原帖由 flw 于 2008-12-17 10:09 发表

这里的 eval 是双关语。同时还需要了解一下 Shell 的 eval 才行。

Shell 的这个 ${1+"$@"} 和 "$@" 有嘛区别?我试了下好像结果都一样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP