39.5. ½Å·ÚµÈ PL/Perl ¹× ½Å·ÚµÇÁö ¾Ê´Â PL/Perl

Åë»ó, PL/Perl´Â plperl¶ó´Â À̸§À¸·Î "½Å·ÚµÈ"ÇÁ·Î±×·¥ ¾ð¾î·Î¼­ ¼³Ä¡ µË´Ï´Ù. ÀÌ ¼³Á¤¿¡¼­´Â, º¸¿Ï¼ºÀ» È®º¸Çϱâ À§Çؼ­ PerlÀÇ Æ¯Á¤ÀÇ ¿¬»êÀº ¹«È¿·Î µË´Ï´Ù. ÀϹÝÀûÀ¸·Î´Â, Á¦ÇѵǴ ¿¬»êÀº ȯ°æ¿¡ ÀÛ¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. À̰Ϳ¡´Â, ÆÄÀÏ ÇÚµé ¿¬»êÀ̳ª require, use(¿ÜºÎ ¸ðµâ¿ë)°¡ Æ÷ÇԵ˴ϴÙ. CÇÔ¼ö¿¡¼­´Â °¡´ÉÇÕ´Ï´Ù¸¸, Perl¿¡¼­´Â, µ¥ÀÌÅͺ£À̽º ¼­¹ö ³»ºÎ¿¡ Á¢±ÙÇÏ´Â ¹æ¹ýÀ̳ª, ¼­¹ö ÇÁ·Î¼¼½ºÀÇ ±ÇÇÑ¿¡ ÀÇÇÑ OS·¹º§ÀÇ Á¢±ÙÀ» ½Ç½ÃÇÏ´Â ¹æ¹ýÀº ¾ø½À´Ï´Ù. ÀÌ °á°ú, µ¥ÀÌÅͺ£À̽ºÀÇ ¸ðµç ºñƯ±Ç »ç¿ëÀÚ´Â ÀÌ ¾ð¾î¸¦ »ç¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

º¸¾È»óÀÇ ÀÌÀ¯·Î Çã¿ëµÇÁö ¾ÊÀº ÆÄÀÏ ½Ã½ºÅÛ ¿¬»êÀ» ½Ç½ÃÇϱ⠶§¹®¿¡, Àß µ¿ÀÛÇÏÁö ¾Ê´Â ÇÔ¼öÀÇ ¿¹¸¦ ÀÌÇÏ¿¡ ³ªÅ¸³À´Ï´Ù.

CREATE FUNCTION badfunc() RETURNS integer AS $$
    my $tmpfile = "/tmp/badfile";
    open my $fh, '>', $tmpfile
        or elog(ERROR, qq{could not open the file "$tmpfile": $!});
    print $fh "Testing writing to a file\n";
    close $fh or elog(ERROR, qq{could not close the file "$tmpfile": $!});
    return 1;
$$ LANGUAGE plperl;

Çã¿ëµÇÁö ¾ÊÀº ¿¬»êÀÇ »ç¿ëÀº °ËÁõ ±â´É¿¡ ÀÇÇØ °ËÃâµÇ±â ¶§¹®¿¡, ÀÌ ÇÔ¼öÀÇ ÀÛ¼ºÀº ½ÇÆÐÇÕ´Ï´Ù.

Á¦ÇÑÀÌ ¾ø´Â Perl ÇÔ¼öÀÇ ÀÛ¼ºÀÌ ¹Ù¶÷Á÷ÇÑ °æ¿ì°¡ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é, Perl ÇÔ¼ö¸¦ »ç¿ëÇØ ¸ÞÀÏÀ» ¼Û½ÅÇÏ´Â °Í °°Àº °æ¿ìÀÔ´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì¸¦ Ãë±ÞÇϱâ À§Çؼ­, PL/Perl°¡ "½Å·ÚµÇÁö ¾Ê´Â"¾ð¾î(Åë»óPL/PerlU·Î ºÒ¸³´Ï´Ù)·Î¼­ ¼³Ä¡µÉ ¼öµµ ÀÖ½À´Ï´Ù. ). ÀÌ °æ¿ì´Â ¿ÏÀüÇÑ Perl ¾ð¾î¸¦ »ç¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. createlangÇÁ·Î±×·¥ÀÌ ¾ð¾îÀÇ ¼³Ä¡¿¡ »ç¿ëµÇ¾úÀ» °æ¿ì, plperlu¶ó´Â ¾ð¾î¸í¿¡ ÀÇÇØ, ½Å·ÚµÇÁö ¾Ê´Â PL/PerlÀÇ º¯Á¾ÀÌ ¼±Åõ˴ϴÙ.

PL/PerlUÇÔ¼öÀÇ ÀÛ¼ºÀÚ´Â, ±× ÇÔ¼ö¸¦ ºÒÇÊ¿äÇÑ ÀÏ·Î »ç¿ëµÇÁö ¾Êµµ·Ï ÁÖÀÇÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÌ ÇÔ¼ö´Â, µ¥ÀÌÅͺ£À̽º °ü¸®Àڷμ­ ·Î±×ÀÎÇÑ »ç¿ëÀÚ°¡ ½ÇÇàÇÒ ¼ö ÀÖ´Â °ÍÀ» ¸ðµÎ ½ÇÇàÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. µ¥ÀÌÅͺ£À̽º ½Ã½ºÅÛÀº ¿ÀÁ÷ µ¥ÀÌÅͺ£À̽ºÀÇ ½´ÆÛ À¯Àú¿¡°Ô¸¸ ½Å·ÚµÇÁö ¾Ê´Â ¾ð¾î¿¡ ÀÇÇÑ ÇÔ¼ö ÀÛ¼ºÀ» Çã°¡Çϰí ÀÖ´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä.

»ó±âÀÇ ÇÔ¼ö°¡, ½´ÆÛ À¯Àú¿¡ ÀÇÇØ plperlu¾ð¾î¸¦ »ç¿ëÇØ ÀÛ¼ºµÇ¾úÀ» °æ¿ì, ½ÇÇàÀÌ °¡´ÉÇØÁý´Ï´Ù.

Note: PL/PerlU·ÎºÎÅÍ PL/Perl¿¡ÀÇ Æ¯±Ç ¿¬»êÀÇ À¯ÃâÀ» ¸·´Â º¸¾È»óÀÇ ÀÌÀ¯¿¡ ÀÇÇØ, ÀÌ·¯ÇÑ 2°³ÀÇ ¾ð¾î¸¦ ´Ù¸¥ Perl ÀÎÅÍÇÁ¸®ÅÍÀÇ ÀνºÅϽº·Î ½ÇÇàÇØ¾ßÇÕ´Ï´Ù. »ç¿ëÇϰí ÀÖ´Â PerlÀÇ ¼³Ä¡°¡ ÀûÀýÈ÷ ÄÄÆÄÀÏ µÇ°í ÀÖÀ¸¸é, ¹®Á¦µÇÁö ¾Ê½À´Ï´Ù. ±×·¯³ª, ¸ðµç ¼³Ä¡°¡ ÀûÀýÇÑ Ç÷¡±×¸¦ ºÙ¿© ¸í·ÉµÇ°í ÀÖ´Ù°í´Â ÇÒ ¼ö ¾ø½À´Ï´Ù.PostgreSQL°¡ ÀÌ ¹®Á¦¿¡ ÇØ´çÇÏ´Â °ÍÀ» °ËÃâÇϸé, 2¹øÂ° interpreter¸¦ ±âµ¿ÇÏÁö ¾Ê°í, ¿¡·¯¸¦ ¹ß»ýÇÕ´Ï´Ù. ÀÌ ¶§¹®¿¡, ÀÌ·¯ÇÑ ¼³Ä¡¿¡¼­´Â, µ¿ÀÏÇÑ ¹é¿£µå ÇÁ·Î¼¼½º³»¿¡¼­¾È PL/PerlU ¿Í PL/PerlÀÇ ¾çÂÊ ¸ðµÎ¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ ¹®Á¦ÀÇ ÇØ¼Ò ¹æ¹ýÀº, ÀûÀýÇÑ Ç÷¡±×, usemultiplicity ¶Ç´Â, usethreads ¹× useithreadsÀÇ ¾çÂÊ ¸ðµÎ¸¦ ºÙ¿© ÄÄÆÄÀÏ ÇÑ Perl ¼³Ä¡¸¦ ÀÔ¼öÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº perlembed¸Þ´º¾ó ÆäÀÌÁö¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.