📄 xs.pm
字号:
package MakeMaker::Test::Setup::XS;@ISA = qw(Exporter);require Exporter;@EXPORT = qw(setup_xs teardown_xs);use strict;use File::Path;use File::Basename;use MakeMaker::Test::Utils;my $Is_VMS = $^O eq 'VMS';my %Files = ( 'XS-Test/lib/XS/Test.pm' => <<'END',package XS::Test;require Exporter;require DynaLoader;$VERSION = 1.01;@ISA = qw(Exporter DynaLoader);@EXPORT = qw(is_even);bootstrap XS::Test $VERSION;1;END 'XS-Test/Makefile.PL' => <<'END',use ExtUtils::MakeMaker;WriteMakefile( NAME => 'XS::Test', VERSION_FROM => 'lib/XS/Test.pm',);END 'XS-Test/Test.xs' => <<'END',#include "EXTERN.h"#include "perl.h"#include "XSUB.h"MODULE = XS::Test PACKAGE = XS::TestPROTOTYPES: DISABLEintis_even(input) int input CODE: RETVAL = (input % 2 == 0); OUTPUT: RETVAL END 'XS-Test/t/is_even.t' => <<'END',#!/usr/bin/perl -wuse Test::More tests => 3;use_ok "XS::Test";ok !is_even(1);ok is_even(2);END );sub setup_xs { setup_mm_test_root(); chdir 'MM_TEST_ROOT:[t]' if $Is_VMS; while(my($file, $text) = each %Files) { # Convert to a relative, native file path. $file = File::Spec->catfile(File::Spec->curdir, split m{\/}, $file); my $dir = dirname($file); mkpath $dir; open(FILE, ">$file") || die "Can't create $file: $!"; print FILE $text; close FILE; } return 1;}sub teardown_xs { foreach my $file (keys %Files) { my $dir = dirname($file); if( -e $dir ) { rmtree($dir) || return; } } return 1;}1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -