Bir süredir C programlama yapıyorum. Şimdi perl'in arayabileceği bir C programı yazmam gerek. Aşağıdaki dummy perl işleviyle aynı sözdizimine sahip olmalıdır: İki giriş alın, her ikisi de dizgidir (ikili karakterler içerebilir, hatta "\ x00"), yeni bir dize çıktı. dışındaki çıkışına/I C işlevi nasıl yazılır ve perl'den nasıl yazılır
sub dummy {
my ($a, $b) = @_;
return $a . $b;
}
C
bunu yapmak gerekir kısaca uygulanması için yudum baktı, ama girdi alarak neden Tabii, fonksiyonun algoritma işte, daha karmaşık olacak Bir tamsayı kolay değildir, umarım birisi somut bir örnek verebilir.
Şimdiden teşekkürler.
UPDATE: Rob'den (cpan'da Inline :: C modülünün yazarı) harika bir örneği var, teşekkürler!
##############################
use warnings;
use strict;
use Devel::Peek;
use Inline C => Config =>
BUILD_NOISY => 1,
;
use Inline C => <<'EOC';
SV * foo(SV * in) {
SV * ret;
STRLEN len;
char *tmp = SvPV(in, len);
ret = newSVpv(tmp, len);
sv_catpvn(ret, tmp, len);
return ret;
}
EOC
my $in = 'hello' . "\x00" . 'world';
my $ret = foo($in);
Dump($in);
print "\n";
Dump ($ret);
##############################
Hızlı yanıt ve bağlantı için teşekkürler. Inline :: C'nin perl guts'u bilmeyen biri için perleks kullanmanın acısını azalttığı anlaşılıyor. Inline :: C: https://metacpan.org/pod/Inline::C-Cookbook'u kullanmanın birçok örneğini içeren bir yemek kitabı var. – packetie