--------------------------------------------------------------------------------
VIII. ¹®ÀÚ¿ ó¸®/°Ë»ö/ġȯ ±â¹ý
PERLÀÇ °¡Àå Å« °Á¡ÀÌ ¹®ÀÚ¿ 󸮿¡ ÀÖ¾î¼ ¸Å¿ì À¯¿¬ÇÏ°í ´Ù¾çÇÑ ±â¹ýµéÀ» Á¦°øÇÑ´Ù´Â Á¡ÀÌ´Ù. ±×¸®°í, Á¤±Ô ¾î¹ýÀ» ÀÌ¿ëÇÑ °·ÂÇÑ °Ë»ö/ġȯ ±â´ÉÀº ±× ¾î¶°ÇÑ ¾ð¾î¿¡¼µµ ã¾Æº¼ ¼ö ¾ø´Â ¾öû³ ±â´ÉÀÌ´Ù. PERLÀÌ WebÀÇ °ÀÚ°¡ µÈ °Íµµ ¹Ù·Î ÀÌ°Í ¶§¹®ÀÌ´Ù.
1. ¹®ÀÚ¿ ó¸®
C ¾ð¾î·Î CGI¸¦ ÀÛ¼ºÇØ º¸½Å ºÐµéÀº ¹®ÀÚ¿ 󸮰¡ ¸Å¿ì °íµÇ´Ù´Â °ÍÀ» ´À²¼À» °ÍÀÌ´Ù. PERL¿¡¼´Â ÀÏ´Ü º¯¼ö TypecastingÀÌ ¾ø´Ù´Â Á¡¿¡¼ ½Ã°£À» ¹ú ¼ö ÀÖ´Ù. ±×¸®°í ´ÙÀ½°ú °°Àº À¯¿ëÇÑ ÇÔ¼öµéÀÌ ÇÁ·Î±×·¡¹Ö¿¡ µµ¿òÀ» ÁÙ °ÍÀÌ´Ù.
(1) printf ÇÔ¼ö
ÀÌ ÇÔ¼ö´Â C¾ð¾î¿¡¼µµ µîÀåÇÑ´Ù. »ç¿ëÇÏ´Â ¹ýÀº C¿Í µ¿ÀÏÇÏ´Ù.
¿¹) printf("¹ÚÂùÈ£ÀÇ ¼Ò¼ÓÆÀÀº %sÀ̰í,
µî¹øÈ£´Â %dÀÌ´Ù.n", "DODGERS", 61);
ÀÌ ÇÔ¼öÀÇ ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.
°á°ú) ¹ÚÂùÈ£ÀÇ ¼Ò¼ÓÆÀÀº DODGERSÀ̰í, µî¹øÈ£´Â 61ÀÌ´Ù.
printf ÇÔ¼ö¿¡¼ ƯÁ¤ º¯¼ö ¹× »ó¼öÀÇ Ãâ·Â Æ÷¸ËÀ» Á¤ÇØÁÖ±â À§ÇØ »ç¿ëÇÏ´Â Æ÷¸Ë ¹®ÀÚ´Â ´ÙÀ½°ú °°´Ù.
Æ÷¸Ë ¹®ÀÚ ¼³¸í
%d ¼ýÀÚ(10Áø¼ö)
%o ¼ýÀÚ(8Áø¼ö)
%x ¼ýÀÚ(16Áø¼ö)
%c ¹®ÀÚ(1 byte)
%s ¹®ÀÚ¿
%f ºÎµ¿¼Ò¼ýÁ¡ ¼ýÀÚ
(2) sprintf ÇÔ¼ö
ÀÌ ÇÔ¼ö ¿ª½Ã C¿¡µµ ÀÖ´Â ÇÔ¼öÀÌ´Ù. sprintf´Â ƯÁ¤ º¯¼öÀÇ °ªÀ» ÀÏÁ¤ÇÑ Æ÷¸ËÀ» °®Ãß¾î º¯¼ö¿¡ ÇÒ´çÇØÁÖ´Â ¿ªÇÒÀ» ÇÏ´Â ÇÔ¼öÀÌ´Ù.
¿¹)
$formatted = sprintf("$%.2fn", 123.45678);
print $formatted;
°á°ú)
$123.46
(3) ¹®ÀÚ¿ °áÇÕ ¿¬»êÀÚ
¹®ÀÚ¿ °áÇÕÀ» À§Çؼ´Â µµÆ®(.) ¿¬»êÀÚ¸¦ ÀÌ¿ëÇÑ´Ù.
¿¹1)
$string_1 = "Chan ";
$string_2 = "Ho Park";
print $string_1.$string_2;
°á°ú1)
Chan Ho Park
±×¸®°í ´ÙÀ½°ú °°Àº Ç¥ÇöÀÌ °¡´ÉÇÏ´Ù.
¿¹2)
$string_1 = "Chan ";
$string_1 .= "Ho Park";
print $string_1;
°á°ú2)
Chan Ho Park
(4) ºÎºÐ¹®ÀÚ¿ ÃßÃâ ÇÔ¼ö - substr
substr ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ¹®ÀÚ¿ÀÇ ÀϺκÐÀ» ÃßÃâÇÒ ¼ö ÀÖ´Ù.
¾Æ·¡ÀÇ ¿¹´Â "Chan Ho Park"À̶ó´Â ¹®ÀÚ¿¿¡¼ ºÎºÐ¹®ÀÚ¿ "Park" À» ÃßÃâÇÏ´Â ¿¹ÀÌ´Ù.
¿¹Á¦ ¹®ÀÚ¿À» ºÐ¼®ÇØ º¸¸é ´ÙÀ½°ú °°´Ù.
C = [0]
h = [1]
a = [2]
n = [3]
' ' = [4]
H = [5]
o = [6]
' ' = [7]
P = [8]
a = [9]
r = [10]
k = [11]
¹®ÀÚ¿ÀÇ °¢ ¹®ÀÚ¿¡ ¹øÈ£¸¦ ºÙ¿´À» °æ¿ì À§¿Í °°´Ù. °á±¹, 'P' ÀÚÀÇ À§Ä¡´Â 8¹øÂ°°¡ µÇ¸ç, "Park"Àº ÃÑ 4 ¹®ÀÚ·Î ±¸¼ºµÇ¾î ÀÖÀ¸¹Ç·Î ¾Æ·¡ ¿¹Á¦¿Í °°ÀÌ Çϸé "Park"À» ÃßÃâÇÒ ¼ö ÀÖ´Ù.
¿¹)
$sub_string = substr("Chan Ho Park", 8, 4);
print $sub_string;
°á°ú)
Park
(5) ¹®ÀÚ¿ ±æÀÌ °è»ê ÇÔ¼ö - length
substr ÇÔ¼ö´Â ½ÇÁ¦·Î length ÇÔ¼ö¿Í ÇÔ²² »ç¿ëÇϸé È¿°ú°¡ ÀÖ´Ù. length ÇÔ¼ö´Â ÇØ´ç ¹®ÀÚ¿ÀÇ ±æÀÌ, Áï byte ¼ö¸¦ °è»êÇÑ´Ù.
¿¹)
$len = length("Chan Ho Park");
print $len;
°á°ú)
12
substr ÇÔ¼ö¿Í length ÇÔ¼ö¸¦ º´ÇàÇØ¼ »ç¿ëÇÑ ¿¹ÀÌ´Ù.
ÀÌ ¿¹Á¦´Â ½ÇÁ¦·Î °Ô½ÃÆÇ ½ºÅ©¸³Æ®¿¡¼ ¹ßÃéÇÑ °ÍÀ¸·Î, °Ô½ÃÆÇ ³»¿ëÀ» Á¶È¸ÇßÀ» °æ¿ì Á¶È¸¼ö¸¦ Çϳª Áõ°¡½ÃŰ´Â ±â´ÉÀ» ÇÑ´Ù.
open(WRITE_FILE, ">$basedir/$bulletin_index_file") ||
die "Can't Open Bulletin File!n";
$search_str = "<!--access_count: $input{'id'}-->";
$str_len = length($search_str);
for($i=0;$i<=$SIZE;$i++) {
$_ = $LINES[$i];
if(/$search_str/) {
$access_count = substr($_, $str_len);
$access_count++;
print WRITE_FILE "$search_str$access_countn";
}
else {
print WRITE_FILE $_;
}
}
close(WRITE_FILE);
(6) °³Çà ¹®ÀÚ Á¦°Å ÇÔ¼ö - chop
chop ÇÔ¼ö´Â ¸Å¿ì Áß¿äÇÑ ±â´ÉÀ» ÇÑ´Ù. ¸¸ÀÏ ´ÙÀ½°ú °°Àº ÆÄÀÏÀÌ ÀÖ´Ù°í ÇÏÀÚ.
I am Chan Ho Park.
I am the ace pitcher of L.A. Dodgers.
±×·±µ¥, ½ÇÁ¦ ÀÌ ÆÄÀÏÀº °³Çà(Line Feed - "n") ¹®ÀÚ¸¦ ´ã°í ÀÖ´Ù. °á±¹, ÀÌ ÆÄÀÏÀº ´ÙÀ½°ú °°´Ù.
I am Chan Ho Park.n
I am the ace pitcher of L.A. Dodgers.n
½ÇÁ¦·Î ÀÌ ÆÄÀÏÀ» ¶óÀÎ ´ÜÀ§·Î ÀÐ¾î¼ Ã³¸®Çϱâ À§Çؼ´Â ¹Ýµå½Ã ¶óÀÎ ³¡ÀÇ °³Çà ¹®ÀÚ¸¦ Àß¶ó ¹ö·Á¾ß ÇÑ´Ù. ¸¸¾à ÀÌ ÆÄÀÏÀÇ Ã¹¹øÂ° ¶óÀÎÀ» º¯¼ö¿¡ ÀúÀåÇÑ ÈÄ »ç¿ëÇÏ·Á¸é chop ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© °³Çà ¹®ÀÚ¸¦ Á¦°ÅÇØ¾ß ÇÑ´Ù.
$line = "I am Chan Ho Park.n";
chop ($line);
--------------------------------------------------------------------------------
2. ¹®ÀÚ¿ °Ë»ö ¹× ġȯ (Selena SolÀÇ Àú¼¿¡¼ ºÎºÐ Àοë)
ÀÌÁ¦ºÎÅÍ´Â UNIXÀÇ Á¤±Ô ¾î¹ýÀ» ÀÌ¿ëÇÏ¿© ƯÁ¤ ¹®ÀÚ¿ÀÇ °Ë»ö ¹× ġȯ ±â¹ýÀ» ¾Ë¾Æº¸ÀÚ.
(1) ÆÐÅÏ ¸ÅĪ(Pattern Matching)ÀÇ ±âº»
vi ÆíÁý±â¸¦ ½á º¸½Å ºÐµéÀº ¾î¶² ¹®ÀÚ¿À» ã¾Æ º¼ ¶§ Esc ۸¦ ´©¸£°í "/"¸¦ ´©¸¥ ÈÄ Ã£À¸·Á´Â ¹®ÀÚ¿À» ÀÔ·ÂÇÑ ÈÄ ¿£Å͸¦ ´·¯ ¹®ÀÚ¿ °Ë»öÀ» ÇØ º» ÀÏÀÌ ÀÖÀ» °ÍÀÌ´Ù.
PERL¿¡¼´Â ÇØ´ç ¹®ÀÚ¿¿¡¼ ãÀ¸·Á´Â ÆÐÅÏÀ» /[pattern]/¾È¿¡ ÁöÁ¤ÇØ ³õ°í for loopµîÀ» ÀÌ¿ëÇÏ¿© °Ë»öÀ» ½ÃµµÇÑ´Ù. ´ÙÀ½Àº ¾î¶² ¹è¿¿¡ "DODGERS" ¶ó´Â °ªÀÌ ÀÖ´Â ¹è¿¿ä¼Ò°¡ Àִ°¡¸¦ ã¾Æº¸´Â ÇÁ·Î±×·¥ÀÌ´Ù.
$find_count = 0;
foreach $array (@myarray) {
if($array =~ /DODGERS/) {
$find_count++;
}
}
print "$find_count Match(es)";
À§¿¡¼ º¸¾ÒµíÀÌ, º¯¼ö¿Í ÆÐÅÏ ¸ÅĪÀ» ½Ãų °æ¿ì¿¡´Â ¹Ýµå½Ã "=~" ¿¬»êÀÚ¸¦ ÀÌ¿ëÇØ¼ ºñ±³ÇØ¾ß ÇÑ´Ù. ¾ÕÀ¸·Î ÀÌ·¯ÇÑ ½ºÅ¸ÀÏÀÇ ¿¹Á¦¸¦ ÀÚÁÖ º¸°Ô µÉ °ÍÀÌ´Ù. ¸Å¿ì Áß¿äÇÑ Ç¥ÇöÀÌ´Ï ¿Ü¿ö(?) µÑ °Í.
±×¸®°í, ´ë°ýÈ£([ ])¸¦ ÀÌ¿ëÇÏ¿© Àüü ¹®ÀÚ Å¬·¡½º(´ë°ýÈ£ ³»¿¡ ÀÖ´Â ¹®ÀÚµéÀÇ ¸ðÀÓ)¸¦ ÀÏÄ¡ÇÏ°Ô ÇÒ ¼ö ÀÖ´Ù.
¿¹¸¦ µé¾î ¦¼ö·Î ³ª¿µÈ ƯÁ¤ ¼ýÀÚ Çϳª¿Í ÀÏÄ¡ÇÏ°Ô ÇÏ·Á¸é ´ÙÀ½°ú °°Àº Ç¥ÇöÀ» ¾´´Ù.
/[02468]/
´ë½¬(-) ¸¦ ÀÌ¿ëÇØ¼ ¹®ÀÚ Å¬·¡½ºÀÇ ¹üÀ§¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹´Â ¾ËÆÄºª Áß ¼Ò¹®ÀÚ Çϳª¿Í ÀÏÄ¡ÇÏ°Ô Çϴ ǥÇöÀÌ´Ù.
/[a-z]/
ij·µ(^) ¹®ÀÚ¸¦ »ç¿ëÇϸé Ŭ·¡½º¿¡ ÀÖÁö ¾ÊÀº ¸ðµç ¹®ÀÚ¿Í ÀÏÄ¡ÇÏ°Ô ÇÒ ¼ö ÀÖ´Ù. ij·µ(^) ¹®ÀÚ°¡ Ŭ·¡½º ³»¿¡ ¾²ÀÌ°Ô µÇ¸é ÀÌ´Â ¸¶Ä¡ NOT ³í¸® ¿¬»êÀÚ¿Í °°Àº ±â´ÉÀ» ÇÏ°Ô µÈ´Ù.
´ÙÀ½ ¿¹´Â ¼ýÀÚ°¡ ¾Æ´Ñ ¹®ÀÚ Çϳª¿Í ÀÏÄ¡ÇÑ´Ù.
/[^0-9]/
±×¸®°í, Ŭ·¡½ºµéÀ» ¸î°³¶óµµ ¸ð¾Æ¼ ÇϳªÀÇ Å¬·¡½º·Î Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹´Â ¾ËÆÄºª ´ë¹®ÀÚ, ¾ËÆÄºª ¼Ò¹®ÀÚ, ¼ýÀÚ Çϳª¿Í ÀÏÄ¡ÇÏ°Ô ÇÑ´Ù.
/[a-zA-Z0-9]/
ÇÑ °³ ÀÌ»óÀÇ ¹®ÀÚ¿Í ¸ÅÄ¡½Ãų °æ¿ì¿¡´Â Ŭ·¡½º Á¤ÀÇ¿¡ ÀÌ¾î¼ ÀÚ¸®¼ö¸¦ ½á ÁÖ¸é µÈ´Ù. ´ÙÀ½ ¿¹´Â ¾ËÆÄºª ´ë¹®ÀÚ/¼Ò¹®ÀÚ µÎ°³¿Í ÀÏÄ¡ÇÏ°Ô µÈ´Ù.
/[a-zA-Z]{2}/
À§ÀÇ ¿¹´Â
/[a-zA-Z][a-zA-Z]/
°ú °°Àº °á°úÀÌ´Ù.
´ÙÀ½Àº ¸ÅÄ¡ ¿¬»êÀÚ¿¡ ´ëÇØ¼ ¾Ë¾Æº»´Ù. ¸ÅÄ¡ ¿¬»êÀÚ¸¦ ÀÌ¿ëÇØ¼ º¹ÀâÇÑ ÆÐÅÏ ¸ÅÄ¡ ·çƾÀ» ¸¸µé ¼ö ÀÖ´Ù.
¸ÅÄ¡ ¿¬»êÀÚ ¼³¸í
n Newline
r Carriage Return
t ÅÇ ¹®ÀÚ
D ¼ýÀÚ°¡ ¾Æ´Ñ °Í[^0-9]
w ´Ü¾î ¹®ÀÚ[0-9a-zA-Z]
W ºñ´Ü¾î ¹®ÀÚ
s °ø¹é ¹®ÀÚ(t, n, r, f)
S ºñ°ø¹é ¹®ÀÚ
* 0°³ ÀÌ»ó ¹®ÀÚ ¹ß»ý½Ã
+ 1°³ ÀÌ»ó ¹®ÀÚ ¹ß»ý½Ã
. ƯÁ¤ ¹®ÀÚ
? 0°³ ȤÀº 1°³ÀÇ ¹®ÀÚ ¹ß»ý½Ã
¿¹¸¦ µé¾î ¸¶Ä§Ç¥(.) ¿¬»êÀڴ ƯÁ¤ ¹®ÀÚ¿Í ÀÏÄ¡Çϵµ·Ï ÇÏ´Â µ¥ »ç¿ëµÈ´Ù. µû¶ó¼ "/eri./" ´Â "erik" °ú "eric", "eria" µî°ú ÀÏÄ¡ÇÑ´Ù. ±×·¯³ª "ericc"°ú´Â ÀÏÄ¡ÇÏÁö ¾Ê´Â´Ù.
º°Ç¥ ¿¬»êÀÚ(*)¸¦ »ç¿ëÇϸé 0°³ ÀÌ»óÀÇ ¹®ÀÚ°¡ ¹ß»ýÇÒ °æ¿ì ÀÏÄ¡ÇÑ´Ù. µû¶ó¼ "/e*ric/" Àº "eeeeeeeeeric", "eric", "errrrric" µî°ú ÀÏÄ¡ÇÑ´Ù.
º°Ç¥ ¿¬»êÀÚ ´ë½Å ´õÇϱ⠿¬»êÀÚ(+)¸¦ »ç¿ëÇÏ¸é ¾à°£ ´Þ¶óÁø´Ù. "/e+ric/" Àº "eeeeeric", "erric", "edric" µî°ú´Â ÀÏÄ¡Çϳª "eric"°ú´Â ÀÏÄ¡ÇÏÁö ¾Ê´Â´Ù.
¹°À½Ç¥ ¿¬»êÀÚ(?)´Â 0°³ ȤÀº 1°³ÀÇ ¹®ÀÚ ¹ß»ý½Ã¿¡¸¸ ÀÏÄ¡ÇÑ´Ù. µû¶ó¼ "/e?ric/" Àº "eeric", "erric", "eric" °ú ÀÏÄ¡Çϳª "eeeeeric" °ú´Â ÀÏÄ¡ÇÏÁö ¾Ê´Â´Ù.
(2) ÆÐÅÏ ¸ÅĪ Ȱ¿ëÇϱâ
´ÙÀ½ ¿¹Á¦´Â ÆÐÅÏ ¸ÅĪÀ» ÀÌ¿ëÇÏ¿© ÁöÁ¤µÈ ÆÐÅÏÀÇ ¹®ÀÚ¿·ÎºÎÅÍ º¯¼ö¸¦ ²ôÁý¾î ³»´Â ¿¹Á¦ÀÌ´Ù.
ÀÌ ¿¹Á¦´Â ½ÇÁ¦·Î HTML ¹®¼¸¦ ¿¾î ¹®¼ÀÇ ¶óÀÎÀ» ¹è¿¿¡ ÇÒ´çÇÑ ÈÄ ±× ¹è¿ ¿ä¼Ò Áß¿¡¼ <title> ~ </title>ÅÂ±× ³»¿¡ ÀÖ´Â ¹®ÀÚ¿À» º¯¼ö $fetched_title ¿¡ ÇÒ´çÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. ¹°·Ð, <title> ~ </title> ű״ ÇÑ ¶óÀÎ ¾È¿¡ ÀÖ¾î¾ß ÇÑ´Ù´Â ÀüÁ¦Á¶°ÇÀÌ µû¸£¸ç, ¸¸ÀÏ ±×·¸Áö ¾Ê´Ù¸é ½ºÅ©¸³Æ®¸¦ ÀÌ¿ëÇØ¼ ÇÑ ¶óÀÎÀ» ¸¸µéµµ·Ï Á¶ÀÛÀ» ÇØ¾ß ÇÑ´Ù.
open(HTMLFILE, "index.htm") || die $!;
@lines = <HTMLFILE>;
close(HTMLFILE);
foreach $line (@lines) {
if ($line =~ /<title>(.*)</title>/) {
$fetched_title = $1;
}
}
ÆÐÅÏ ¹®ÀÚ¿·ÎºÎÅÍ º¯¼ö¸¦ ÃßÃâÇϱâ À§Çؼ´Â ÃßÃâÇÏ·Á´Â ÆÐÅÏÀ» "(" °ú ")" À¸·Î ¸·¾Æ¾ß ÇÑ´Ù.
À§ÀÇ ¿¹Á¦´Â <title> ~ </title> »çÀÌ¿¡ ÀÖ´Â Àû¾îµµ 1 ¹®ÀÚ ÀÌ»óÀÇ ¹®ÀÚ¿À» ²ôÁý¾î ³½´Ù. ¸¸¾à, <title> ~ </title> »çÀÌ¿¡ °ø¹é ¹®ÀÚ Á¶Â÷µµ ¾ø´Ù¸é º¯¼ö¿¡ ÇÒ´çµÇÁö ¾Ê°Ô µÈ´Ù.
±×¸®°í, ÃßÃâµÈ º¯¼ö´Â ±âº»ÀûÀ¸·Î °ýÈ£·Î ¸·¾ÆÁø ÆÐÅÏÀÇ ¼ø¼´ë·Î $1, $2, $3 ...µîÀ¸·Î ±âº» º¯¼ö¿¡ ÇÒ´çµÈ´Ù. ¸¸¾à, <title> ~ </title> »çÀÌÀÇ ¹®ÀÚ¿ÀÌ ´ÙÀ½°ú °°´Ù°í ÇÏÀÚ.
<title>Chapter 1 : Perl ¾ð¾îÀÇ ±âº»</title>
¿©±â¼ "Chapter 1: ¹× "Perl ¾ð¾îÀÇ ±âº»" À̶ó´Â ¹®ÀÚ¿ µÎ °³¸¦ º¯¼ö¿¡ ÀúÀåÇϰڴٰí ÇÏ¸é ¿¹Á¦´Â ´ÙÀ½°ú °°ÀÌ ¹Ù²ï´Ù.
foreach $line (@lines) {
if ($line =~ /<title>(.*): (.*)</title>/) {
$title_1 = $1;
$title_2 = $2;
}
}
°á±¹, $title_1 ¿¡´Â "Chapter 1"ÀÌ, $title_2 ¿¡´Â "Perl ¾ð¾îÀÇ ±âº»" À̶ó´Â °ªÀÌ ÇÒ´çµÇ°Ô µÈ´Ù.
±×¸®°í, ÆÐÅÏ ¹®ÀÚ¿Àº Ư¼ö¹®ÀÚ¸¦ ±¸ºÐÇÑ´Ù. À§ÀÇ °æ¿ì¿¡´Â HTML ű׿¡¼ ¾²ÀÌ´Â "/" ¹®ÀÚ¸¦ »ç¿ëÇÏ´Â °æ¿ìÀÌ´Ù. ÀÌ ¶§´Â ¹Ýµå½Ã "/" ¾Õ¿¡ ¹é½½·¡½¬()¸¦ ½á ÁÖ¾î¾ß ÇÑ´Ù.
(3) split, join ÇÔ¼ö
ÀÌ µÎ ÇÔ¼ö´Â ¹®ÀÚ¿ 󸮿¡ ÀÖ¾î¼ »ó´çÈ÷ Áß¿äÇÏ´Ù. splitÀº ƯÁ¤ÇÑ Á¤±Ô ¾î¹ý¿¡ ÀǰÅÇÏ¿© ƯÁ¤ ¹®ÀÚ¿À» ¸» ±×´ë·Î "Âɰ³¼" ¹è¿¿¡ ÇÒ´çÇÏ´Â ¿ªÇÒÀ» Çϰí, join ÇÔ¼ö´Â ±×ÀÇ ¹Ý´ë ÀÛ¾÷À» ÇÑ´Ù.
¸¸¾à, ´ÙÀ½°ú °°Àº µ¥ÀÌŸ ÆÄÀÏÀÌ ÀÖ´Ù°í ÇÏÀÚ.
1|È«±æµ¿|¼¿ï½Ã ¼¿ïµ¿ 123-4¹øÁö|123-4567
2|±è±æµ¿|ºÎ»ê½Ã ºÎ»ê±¸ ºÎ»êµ¿ 12¹øÁö|051-234-5678
ÀÌ µ¥ÀÌŸ ÆÄÀÏÀ» ÀÐ¾î¼ ÀÏÁ¤ÇÑ Æ÷¸ËÀ» °®Ãß¾î HTML¹®¼·Î »Ñ·ÁÁÖ°í ½ÍÀ» °æ¿ì°¡ ÀÖ´Ù. À̶§ 1°³ÀÇ ·¹ÄÚµå(Record)ÀÇ °¢°¢ÀÇ Çʵå(Field)µéÀº "|" ·Î ±¸ºÐµÇ¾î ÀÖ´Ù. ÆÄÀÏ Reading(°ð ¼³¸íµË´Ï´Ù)À» ÅëÇØ¼ ÀÌ ÆÄÀÏÀÇ ¶óÀεéÀ» ÀüºÎ ¶óÀÎ ¹è¿ @lines¿¡ ÇÒ´çÇß´Ù¸é ÀÌÁ¦ °¢°¢ÀÇ ÇʵåµéÀ» split ÇÔ¼ö¸¦ ½á¼ ºÐ¸®ÇÒ Çʿ䰡 ÀÖ´Ù.
¹°·Ð, //·Î µÑ·¯½ÎÀÎ ºÎºÐ¿¡´Â ¹®ÀÚ¿À» Âɰ³±â À§ÇÑ ±¸ºÐÀÚ°¡ µé¾î°£´Ù.
@one_field = split(/|/, $one_record);
¡Ø "|" µµ Ư¼ö¹®ÀÚÀ̹ǷÎ, ¹é½½·¡½Ã()°¡ ÇÊ¿äÇÏ´Ù.
À§ÀÇ ¿¹Á¦´Â, ¸¸¾à º¯¼ö $one_record°¡ "1|È«±æµ¿|¼¿ï½Ã ¼¿ïµ¿ 123-4¹øÁö|123-4567" À̶ó´Â ¹®ÀÚ¿ °ªÀ» °¡Áö°í ÀÖ´Ù¸é split ÇÔ¼ö´Â "|" ±¸ºÐÀÚ¸¦ °¡Áö°í ÀÌ ¹®ÀÚ¿À» ³ª´©¾î¼ @one_field ¶ó´Â ¹è¿¿¡ ÇÒ´çÇØ ÁÖ´Â ¿ªÇÒÀ» ¼öÇàÇÑ´Ù. °á°ú´Â ´ÙÀ½°ú °°´Ù.
$one_field[0] = "1";
$one_field[1] = "È«±æµ¿";
$one_field[2] = "¼¿ï½Ã ¼¿ïµ¿ 123-4¹øÁö";
$one_field[3] = "123-4567";
¸¸¾à, ¿¬»ó ¹è¿À» ÀÌ¿ëÇÑ´Ù¸é ±Ý»ó÷ȴÙ. ´ÙÀ½ÀÇ ¿¹¸¦ º¸ÀÚ.
@field_name = ('id', 'name', 'address', 'tel');
$one_record = "1|È«±æµ¿|¼¿ï½Ã ¼¿ïµ¿ 123-4¹øÁö|123-4567";
@fields = split(/|/, $one_record);
$i = 0;
foreach $field (@fields) {
$FIELD{$field_name[$i]} = $field;
$i++;
}
print "$FIELD{'id'}n";
print "$FIELD{'name'}n";
print "$FIELD{'address'}n";
print "$FIELD{'tel'}n";
¿¬»ó ¹è¿À» ÀÌ¿ëÇÏ¸é µ¥ÀÌŸ ÆÄÀÏ °ü¸® ÇÁ·Î±×·¥À» º¸´Ù ´õ ½±°Ô ±¸¼ºÇÒ ¼ö ÀÖ´Ù.
¹Ý´ë ÀÛ¾÷À» join ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ÇÒ ¼ö ÀÖ´Ù. ¾î¶² ¹è¿ÀÇ ³»¿ëµéÀ» ÁöÁ¤µÈ ±¸ºÐÀÚ¸¦ ÀÌ¿ëÇÏ¿© ÇϳªÀÇ º¯¼ö¿¡ ÇÒ´çÇÏ·Á¸é, ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù.
$one_field[0] = "1";
$one_field[1] = "È«±æµ¿";
$one_field[2] = "¼¿ï½Ã ¼¿ïµ¿ 123-4¹øÁö";
$one_field[3] = "123-4567";
$new_record = join("|", @one_field);
print $new_record;
(4) ÆÐÅÏ ¸ÅĪÀ» ÀÌ¿ëÇÑ ¹®ÀÚ¿ ¹× ´Ü¾îÀÇ Ä¡È¯(Substitution)
ÀÌ ±â´ÉÀº PERL¿¡¼¸¸ º¼ ¼ö ÀÖ´Â, Áö±¸»óÀÇ ¸ðµç ¾ð¾î Áß¿¡¼ °¡Àå °·ÂÇÑ ±â´ÉÀÌ´Ù. ÆÐÅÏ ¸ÅĪÀ» ÀÌ¿ëÇÏ¿© ¿©·¯ºÐÀº ¶óÀÎ ´ÜÀ§·Î ¹®ÀÚ¿ÀÇ Æ¯Á¤ ´Ü¾î¸¦ ġȯÇÒ ¼ö ÀÖ´Ù. ±âº» ±¸Á¶´Â ´ÙÀ½°ú °°´Ù.
$variable =~ s/[old-string]/[new-string]/[option];
ÀÌ·¸°Ô¸¸ ÇØ ÁÖ¸é, ±âÁ¸ º¯¼ö $variable ³»¿¡ ÀÖ´Â [old-string]À» [new-string]À¸·Î ¹Ù²Ù¾î ´Ù½Ã $variable ¿¡ Àç ÇÒ´çÇØ ÁØ´Ù. Áï, ¹®ÀÚ¿ÀÇ Ä¡È¯(substitution) ÀÌ ÀϾ´Â °ÍÀÌ´Ù.
¿¹1) ÇÑ ¹®ÀÚ¿ ³»¿¡ ÀÖ´Â "babo" ¶ó´Â ´Ü¾î¸¦ "fool" ·Î ġȯ
$mystring = "you are a babo";
$mystring =~ s/babo/fool/;
print $mystring;
°á°ú1)
you are a fool
ġȯ ½Ã ÈçÈ÷ ¾²ÀÌ´Â ¿É¼ÇÀÌ /g, /i, /e ÀÌ´Ù. ´ÙÀ½ÀÇ ¿¹¸¦ µé¾î º¸ÀÚ.
¿¹2)
$mystring = "you are a babo, don't be a babo";
$mystring =~ s/babo/fool/;
print $mystring;
°á°ú2)
you are a fool, don't be a babo
¸ðµç "babo"¶ó´Â ´Ü¾î°¡ "fool"·Î ¹Ù²î±â¸¦ ¹Ù·¨´Âµ¥ ¸Ç óÀ½ÀÇ "babo"¸¸ ¹Ù²î¾ú´Ù. ¿É¼ÇÀ» ÁÖÁö ¾Ê°í ±×³É ġȯÀ» ÇÏ°Ô µÇ¸é óÀ½ ¹ß°ßµÇ´Â ´Ü¾î¸¸ ¹Ù²Ù¾î ¹ö¸®°í ³¡³´Ù. ÀÌ·² °æ¿ì¿¡´Â ³¡¿¡ /g (global) ¿É¼ÇÀ» ÁÖ¸é ¸ðµç "babo" °¡ "fool"·Î ¹Ù²ï´Ù.
¿¹3)
$mystring = "you are a babo, don't be a babo";
$mystring =~ s/babo/fool/g;
print $mystring;
°á°ú3)
you are a fool, don't be a fool
±×¸®°í, ¿©±â¿¡ /i (case Insensitive)¿É¼ÇÀ» ´õ ÁÖ°Ô µÇ¸é ´ë¼Ò¹®ÀÚ °¡¸®Áö ¾Ê°í ¸ðµÎ ¹Ù²Ù¾î ¹ö¸°´Ù.
¿¹4)
$mystring = "you are a babo, don't be a BABO";
$mystring =~ s/babo/fool/gi;
print $mystring;
°á°ú4)
you are a fool, don't be a fool
¹Ý´ë·Î, /e (case sEnsitive)¿É¼ÇÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏ¸é¼ Ä¡È¯ÇÏ°Ô µÈ´Ù.
¿¹5)
$mystring = "you are a babo, don't be a BABO";
$mystring =~ s/babo/fool/ge;
print $mystring;
°á°ú5)
you are a fool, don't be a BABO
--------------------------------------------------------------------------------
|
|