펄을 유용하게 썼다는 것에 기분이 좋고,
새벽 5시가 되도록 졸리지도 않고 코딩에 시간을 보낸 것도 기분이 좋고,
내일 수업 들을 때 졸리지만 않음 최고겠다.
---------------------------------------------------------------------------------
#AI_HW2.c
#목적: 텍스트 파일의 문자열을 원하는 문자열로 교체
---------------------------------------------------------------------------------
...
...
system("interp subs.pl");
---------------------------------------------------------------------------------
#subs.pl
#목적: AI_HW1.c 파일이 perl interpreter를 로드하여
subs.pl 내부의 서브루틴 subs를 수행함
---------------------------------------------------------------------------------
sub subs{
my $data_file="AIDatabase.txt"; #read file
my $changed_file="output.txt"; #write file
open(DAT, $data_file) || die("Could not open file!");
open(OUT, ">$changed_file") || die("Could not open file!");
while(
) { #AIDatabase.txt에서 한줄씩 받아와서
my $output = $_; #$output 변수에 넣고
#미니파로 파싱할 파일 생성
#학과이름 수정
$output =~ s/ university / univ\. /xig; #university -> univ로 변경
...
...
$output =~ s/ japanese \s* literature /JAPANESE/xig; #일문과
$output =~ s/ physics /PHYSICS/xig; #물리학과
$output =~ s/ animal \s* premed /ANIMAL/xig; #수의예과
$output =~ s/ engineering \s* college /ENGINEERING/xig; #공과대학
$output =~ s/ bio \s* technology /BIOTECH/xig; #생명공학
...
...
print OUT $output; #$output을 output.txt라는 새로운 파일에 저장
}
close(OUT); #output.txt 파일을 닫음
close(DAT); #AIDatabase.txt 파일을 닫음
}
---------------------------------------------------------------------------------
#interp.c
#목적: interp.exe 파일의 src file
-> c에서 perl interpreter를 불러 subroutine을 수행
---------------------------------------------------------------------------------
#include
#include
static PerlInterpreter *my_perl;
int main(int argc, char **argv, char **env)
{
char* args = { NULL };
PERL_SYS_INIT3(&argc, &argv, &env);
my_perl = perl_alloc();
perl_construct(my_perl);
perl_parse(my_perl, NULL, argc, argv, NULL);
PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
//Running Perl Actually
perl_run(my_perl);
call_argv("subs", G_DISCARD | G_NOARGS, args);
perl_destruct(my_perl);
perl_free(my_perl);
PERL_SYS_TERM();
}