
一般来说,如果perl调用Linux 命令而使用system命令,可通过检查其返回值来确认是否执行完毕。
#!/usr/bin/perl -wuse strict
my $command = "date"
$iSysRet = system("$command")
if ($iSysRet != 0){
print "Command $command execute failed!\n"
}
# 如果perl 调用子程序,可以在子程序里设置返回值给主程序,然后判断返回值来确定是否运行完毕。
如下:set
array("a")
1
set
array("b")
2
然后在另一个文件里面可以通过source
命令,然后test.tcl就能访问array
如下:
source
test.tcl
puts
"$array($a)"
方法1:编译外部C程序位obj文件
gcc -c out.c
, 修改LDDLFLAG为"-shared /abs/dir/to/out.o"
use Inline C =>Config =>LDDLFLAGS =>"-shared /abs/dir/to/out.o"
use Inline C =><<"C_CODE"
extern int used_func(int, int)
int myfunc(int a, int b)
{
return a + b + a + used_func(a, b)
}
C_CODE
print myfunc(5, 9)."\n"
这种方法严重同 外部cc编译器有关. 路径都使用绝对路径
方法2:
先把外部的C程序编译成静态链接库 比如命名为 libabc.a 然后设置Inline::C的LIBS
ar -rc libout.a out.o
这种方法通用一些.
use Inline C =>Config =>LIBS =>"-L/abs/dir/to/libout.a -lout"
下面的代码一样, 路径都使用绝对路径
其他方法就是使用perlxs, swig等工具了.
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)