Ключевые слова:perl, (найти похожие документы)
Date: Mon, 20 May 2002 19:15:45 +0400
From: Nikolay Pichtin <Nikolay.Pichtin@f30.n5056.z2.fidonet.org>
Newsgroups: fido7.ru.perl
Subject: Программа одновременно на Perl и на Си.
>> чтобы в Perl можно было написать вот так:
>>
>> #define true 1
>> #define false 0
>> #define begin {
>> #define end }
>> #define and &&
>> #define or ||
>> #define not !
Вот из упомянутой статьи:
Поскольку переменные в Perl начинаются со знака доллара ($), его надо было
переопределить в пустую строку. Поскольку Perl позволяет обращаться к
переменной:
$var
как
$ var
(т.е. можно вставлять пробел между знаком доллара и именем переменной), то
определение $ в C как пустой строки даст возможность:
$ foo
обращаться к переменной $foo в Perl и к foo в C.
Двуязычная Perl/C программа
Таким образом, можете взять этот файл и использовать его так:
$ perl kola.pl <arg1> <arg2> <arg3>
или так:
$ gcc kola.c -o kola
$ ./kola <arg1> <arg2> <arg3>
#include <stdio.h>
#include <stdlib.h>
#define ARGV argv
#define $ /*
unshift @ARGV, "foo"; sub atoi{ $_[0] }
"*/
main (int argc, char *argv[]) //";
{
int $ tab[atoi( $ ARGV[3] )];
int $ i;
int $ which, $ offset;
$ which = $ offset = 1;
$ tab [1] = atoi( $ ARGV[ $ which ] );
printf("%d", $ tab[1]);
for( $ i = 2; $ i <= atoi( $ ARGV[3] ) ; $ i++ ) {
$ tab[ $ offset ] -= 1;
if ( $ tab[ $ offset ] == 0 ) {
$ offset++;
$ which = ( ! ( -- $ which ) ) + 1;
}
printf("%d", $ tab[ $ i ] = atoi( $ ARGV[ $ which ] ));
} printf("\n"); }