我知道有一种方法可以从C调用Perl例程。如图所示 http://search.cpan.org/dist/perl/pod/perlcall.pod#NAME
但是,我仍然没有看到C程序员广泛使用它。有没有人用过这个......永远?或者任何想法它没有被如此多地使用的原因是什么?
答案 0 :(得分:10)
嗯,嵌入perl的C程序最着名的例子是Apache和mod_perl,它允许人们通过Perl访问Apache API。
您可能没有看到很多程序嵌入perl,因为它们不需要它作为功能。为什么没有更多的C程序发送电子邮件? :)
答案 1 :(得分:7)
它通常以相反的方式完成。也就是说,脚本语言协调事物,C程序进行处理。 我们的想法是,协调的代码很容易修改,执行处理的代码运行得很快。
要做的事情可能是通过来自C的“系统”调用来生成perl解释器来做某事。可能不是你想到的那样。
答案 2 :(得分:3)
有两个原因可以让人们从C调用perl函数:扩展和嵌入。
在前一种情况下,实际上并非罕见,但对于外人来说这是不可见的。
我认为你的问题实际上是“为什么人们不经常嵌入perl?”这有很多原因,它应该比它应该更加困难最重要的一个恕我直言(见perlcall,perlembed,perlguts和perlapi)。
答案 3 :(得分:3)
为什么我会通过调用Perl来减慢我的C程序?我说这是confirmed Perler。现在,从Perl调用C,这是有道理的(如果你需要额外的速度)。
当一个人在C中发展时,这是因为他们想要将开发时间换成执行速度。
当一个人在Perl中发展时,是因为他们想要将执行速度换成开发时间。
答案 4 :(得分:2)
使用它的一种情况是插件或脚本架构。例如,irssi IRC客户端是用C语言编写的,但支持scripting with Perl。
根据我的经验,使用Perl构建irssi很麻烦,容易出错。我有一些实例,程序根本无法构建启用Perl绑定(某些编译或链接失败),以及程序将编译但在启动时会因运行时错误而立即失败。这些问题可以解释为什么它不是非常流行 - 从另一种语言中调用一种语言几乎不像在.Net中那么容易。
答案 5 :(得分:-1)
许多程序员都知道如何非常有效地混淆C,而不需要求助于Perl。