perl C/C++ 扩展(一)

通过h2xs 中间件,我们可以快速的使用c或则C++ 库来实现perl 扩展功能

第一讲:
跑通hello world 程序
******************************
我们使用命令:
h2xs -A -n test
它会帮助你建立一个test的文件夹,里面已经初始化部分文件了

进入test目录

cd test

打开文件test.xs

vi test.xs

原文件内容为:

#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

#include "ppport.h"

MODULE = test PACKAGE = test

我们增加一个函数变成

#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

#include "ppport.h"

MODULE = test PACKAGE = test

void
hello_world(char *classname)
CODE:
printf("hello world from perl xs language\n");

保存退出

编译并安装,注意,安装需要root权限
perl Makefile.PL
make && make install

编写一个测试的perl 程序,test.pl

#!/usr/bin/perl
use test;
test->hello_world();

保存退出

执行测试程序
perl test.pl

没出什么意外的话,输出
hello world from perl xs language

perl C/C++ 扩展(一),布布扣,bubuko.com

时间: 2024-12-11 05:23:21

perl C/C++ 扩展(一)的相关文章

perl C/C++ 扩展(五)

perl 的C++扩展,返回值为自定义类型. 在 perl C/C++扩展(三) 中,我已经介绍了,如何让perl 认识 c++的类,但是前面的介绍中,包括我参考的博客http://chunyemen.org/archives/493,都提到,返回值必须是基础类型.对于开发者而言,如果返回值只能是基础类型,那么对于扩展的开发热情就大大降低了.楼主排除万难,终于在<高级perl编程(第二版)>.((美)simon cozens)一书的第十八章与第二十章中得到些许启发. 下面我来介绍一下玩法. 首

perl C/C++ 扩展(二)

第二讲perl 加载c/c++的库 先通过h2xs 创建一个新的工程 h2xs -A -n two_test 进入目录 cd two_test 创建一个mylib文件夹,存放静态库 mkdir mylib c程序头文件chen.h #include<stdio.h> void chen(char *); c程序代码chen.c #include "chen.h" void chen(char * name){ printf("input string is : %

perl C/C++ 扩展(四)

在前面三篇博客中,我们了解到如何使用c/c++ 扩展自己的perl 库,但是博主在学习过程中,对动态库或静态库的加载不是十分了解,后来自己又细挖一下.后来就有了这篇博文,再后来,没有再后来了,囧!! 我们先来看看 perl c/c++ 扩展(二)中的 Makefile.PL WriteMakefile( NAME => 'two_test', VERSION_FROM => 'lib/two_test.pm', # finds $VERSION PREREQ_PM => {}, # e.

perl C/C++ 扩展(三)

第三讲扩展库使用c++实现,在调用函数后,返回对象变量,perl 能正确使用所有对象成员 使用h2xs 命令生成初始文件 h2xs -A -n three_test 登录目录 cd three_test c++ 头文件 #ifndef INCLUDED_DUCK_H #define INCLUDED_DUCK_H 1 #include <string> using std::string; class Duck { public: Duck(char*); char* getName(); v

perl IDE

学习perl的网站 网上学习perl教程,可以参考下面2个网站: 1.http://www.runoob.com/perl/perl-tutorial.html 2.https://cn.perlmaven.com/perl-tutorial 一.Window上安装perl编译器 在 Window 平台上有 ActiveStatePerl 和 Strawberry Perl 两种编译器,一般选择后者,http://strawberryperl.com/. 下载后直接安装,注意安装路径,似乎不必设

Perl,第一种后现代计算机语言

在吴涛大哥的博客上提到这篇文章<Perl,第一种后现代计算机语言>,原文链接:http://www.wall.org/~larry/pm.html 尝试翻译一下(已经发了邮件给Larry Wall,并且征得他的许可),有些句子太哲学,翻译不懂,作者是Perl的设计者,只供学习阅读使用.这里感谢我的英语八级同事在一些翻译上给予我很大的帮助.这篇东西拖的有点久,是我15年的计划之一,现在竟然把这个任务拖到了16年了,毕竟自己在这新的一年里有新的目标,所以会把旧的坑先给填上,后面的一些地方翻译的不是

(转载)CSV 文件处理 PERL

http://cn.perlmaven.com/how-to-read-a-csv-file-using-perl http://search.cpan.org/~hmbrand/Text-CSV_XS-1.09/CSV_XS.pm 读取并处理文本是 Perl 的强项.有时候你有一个CSV (Comma-separated values)文件,需要从中提取信息,该怎么办呢? 本节给出三个解决方案. 如果你的CSV文件比较简单,简单的Perl脚本就能轻松搞定.这里是我们的方案一. 第二个方案能够对

Perl 认识简介

Perl简介 Perl 是 Practical Extraction and Report Language 的缩写,可翻译为 "实用报表提取语言". Perl 是高级.通用.直译式.动态的程序语言. Perl 最初的设计者为拉里·沃尔(Larry Wall),于1987年12月18日发表. Perl 借用了C.sed.awk.shell脚本以及很多其他编程语言的特性. Perl 最重要的特性是Perl内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN. Perl,一种功能丰富

grep及正则表达式 含(含断言)

grep和正则表达式 1.grep:Global search REgular expression and Print out the file 作用:文本搜索工具,根据用户指定的模式对目标文件逐行进行匹配,打印匹配到的行 模式:由正则表达式字符及文本字符编写的过滤条件 格式: grep [options] pattern file[...] --color=auto 对匹配到的文本着色显示 -v 显示不能够被pattern匹配的行 -i 忽略file中文件字符的大小写 -n 显示匹配的行号