在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4488|回复: 11

[求助] perl语言菜鸟问题

[复制链接]
发表于 2012-5-3 21:47:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
对程序 perl  my_param
和    ./my_param有什么区别?
我只知道前者是先编译再执行
后面就是一行一行的执行吧?
不知道这样的理解对不对?
请指教!~~
还有,如果我想在TCL中调用perl的命令怎么用?
谢谢  本人新手  望指教
发表于 2012-5-4 12:07:48 | 显示全部楼层
前者my_param作为perl的参数传给perl
后者使用my_param中第一行的信息来调用相关的解析器 要保证my_param有可执行权限
 楼主| 发表于 2012-5-4 21:24:12 | 显示全部楼层
回复 2# alex_wing


    你的意思是两者其实一样的?  没有不一样的地方?  执行方式也一样吗?
发表于 2012-5-4 22:57:35 | 显示全部楼层
本帖最后由 walker 于 2012-5-4 23:14 编辑

回复 3# lyz5432


    前者表示用perl的编译器和引擎来编译和运行该程序,因此你的程序不能是其他脚本,否则会报错。
   后者由于你并没有从外部指定用什么程序去解析它,默认应该是用shell来解析。因此如果你想用perl运行该脚本,你需要在脚本的第一行使用shebang符号#!去告诉系统,你要用那个程序去解析接下来的脚本。对于perl,一般使用如下:
#!/usr/bin/perl
当然,如果你的perl程序并没有安装在上述路径,你需要修改路径。或者试试
#!/usr/bin/env perl
当然,更具可移植性的一种做法为
eval 'exec perl -S $0 "${1+$@}"'
     if 0;
xxxxxx your program xxxx
上述是直接使用shell去运行perl,接着用perl解析运行脚本。 $0表示本脚本,${1+"$@"}表示如有参数,则将参数传递也一起传递。第二行的if 0;(或者挪到第一行)也是必须的。是防止perl解析这两行。
当然,网上还有更具移植性的写法。

上述两种运行perl脚本的方法大多数情况下没有区别,均是先编译后运行的。只是后者需要可执行权限。如果你将当前路径 "." 加入环境变量path中,你直接写xx.pl就可以运行。

至于tcl中调用perl程序,没怎么用过,应该可以直接调用的吧,或者用system或exec命令试试?
 楼主| 发表于 2012-5-5 09:53:12 | 显示全部楼层
本帖最后由 lyz5432 于 2012-5-5 11:51 编辑

回复 4# walker


    非常全面  多谢 还有一点不解   据我所知  C语言才要整个编译好之后再运行  而脚本是翻译一行就执行一行的  那么这里的perl编译指什么?是指整体编译么?
发表于 2012-5-5 19:49:48 | 显示全部楼层
这两个编译概念上是有区别的。
   c语言代码变成直接可运行需要经过预编译、编译、汇编、链接等过程,最后生成机器直接可执行的机器语言。
    而perl程序指的编译并非如此。Perl是一种字节编译语言,并且还是一个字节解释器。它不会象unix中的shell读程序一样,对程序进行逐行执行。相反,Perl会先通读一遍文件,将其编译为内部表达式,然后执行指令。
    在编译的同时,也进行了一些代码的优化,例如,消除了不可能执行的代码,计算了常量表达式,加载了库定义。
具体过程可参考大骆驼书的编译章节。
 楼主| 发表于 2012-5-5 22:40:50 | 显示全部楼层
回复 6# walker


    貌似不是很懂  您的意思是perl的编译过程和C略有区别,但是都是先进行了整体的编译,C是转换为机器语言,perl则是转换为内部表达式
总体上相似吧?  唯一的不同可能就是代码的优化,和转换成的目标语言不一样。?
发表于 2012-5-6 10:50:20 | 显示全部楼层
前者请参考《程序员的自我修养-链接、装载与库》,后者请参考《perl语言编程》。
 楼主| 发表于 2012-5-6 12:30:13 | 显示全部楼层
回复 8# walker


   好吧 多谢
发表于 2012-6-27 17:06:12 | 显示全部楼层
謝謝大大無私地分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 19:04 , Processed in 0.037120 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表