ÆÞ¿¡¼ Á¦°øÇÏ´Â ¾ÆÁÖ À¯¿ëÇÑ º¯¼ö°¡ ¿¬°ü¹è¿ÀÌ´Ù. »ç½Ç °³Ã¼ÁöÇâ ¾ð¾î¿¡¼ °³Ã¼ÀÇ Æ¯¼ºÀ» ÀúÀåÇÏ´Â ¹æ¹ýÀÌ ¿¬°ü¹è¿ÀÌ´Ù. ÆÞÀº ÀÌ ¿¬°ü¹è¿À» ±âº» º¯¼ö·Î Á¦°øÇÑ´Ù.
¿¬°ü¹è¿Àº ÀÏ¹Ý¹è¿ Ã³·³ ¼ýÀÚ¿¡ÀÇÇØ ÂüÁ¶ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó "Å°"¸¦ ÀÌ¿ëÇؼ "°ª"À» ÂüÁ¶ÇϰԵȴÙ.
¿ä¾à
- %(¹éºÐÀ² ±âÈ£)
- Àüü ¹è¿À» ÂüÁ¶ÇÑ´Ù.
- { }(Áß°ýÈ£)
- "Å°"¸¦ »ç¿ëÇÑ´Ù.
- $
- { }¿Í ÇÔ²² »ç¿ëµÉ ¶§, ÀÌ °ÍÀº "Å°"·Î ÂüÁ¶ÇÑ ¹è¿ ¿ä¼ÒÀÇ °ªÀÌ´Ù.
¼³¸í
ÀϹÝÀûÀÎ ¹è¿ ¿ä¼Ò´Â ¼ýÀÚ¿¡ÀÇÇØ ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù. @food¶ó´Â ¹è¿ÀÇ Ã¹¹ø° ¿ä¼Ò´Â $food[0]ÀÌ°í, µÎ¹ø° ¿ä¼Ò´Â $food[1]ÀÌ´Ù. ±×·¯³ª ÆÞÀº ¹®ÀÚ¿¿¡ÀÇÇØ ¹è¿¿ä¼Ò¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ´Â ¹è¿À» Á¦°øÇÑ´Ù. À̵éÀ» ¿¬°ü¹è¿À̶ó°í ÇÑ´Ù.
¿¬°ü¹è¿À» Á¤ÀÇÇϱâÀ§ÇØ Åë»óÀûÀÎ µÕ±Ù°ýÈ£¸¦ »ç¿ëÇÏÁö¸¸, ¹è¿¸í¿¡ % ±âÈ£¸¦ ºÙÀδÙ. »ç¶÷°ú À̵éÀÇ ³ªÀ̸¦ ¹è¿·Î ÀúÀåÇÑ´Ù°í °¡Á¤ÇÏÀÚ. ÀÌ °ÍÀº ´ÙÀ½°ú °°Àº °ÍÀÌ´Ù.
%ages = ("±èÈñ¼±", 22,
"±èÈñ¾Ö", 34,
"̵ȍ", 27,
"²¿¸¶", "°¾ÆÁö ³ªÀÌ·Î 21",
"¿©¿Õ", 108);
ÀϹݹè¿À» ÇÒ´çÇÏ´Â °Í°ú µ¿ÀÏÇÑ ¹æ¹ýÀ¸·Î ¿¬°ü¹è¿À» ÇÒ´çÇÒ ¼öµµ ÀÖÁö¸¸ ÀÌ °æ¿ì¿¡´Â Å°¿Í °ªÀÇ ¿¬°ü°ü°è°¡ ¸íÈ®ÇÏÁö ¾ÊÀ¸¹Ç·Î ½°Ç¥(,)´ë½Å¿¡ =>¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.
ÁÖÀÇ
ÀÌ ¹æ¹ýÀº Perl 5¿¡¼¸¸ Áö¿øµÈ´Ù.
%ages = ("±èÈñ¼±" => 22,
"±èÈñ¾Ö" => 34,
"̵ȍ" => 27,
"²¿¸¶" => "°¾ÆÁö ³ªÀÌ·Î 21",
"¿©¿Õ" => 108);
ÀÌÁ¦ »ç¶÷µéÀÇ ³ªÀ̸¦ ã±âÀ§ÇØ ´ÙÀ½ Ç¥Çö½ÄÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
print "$ages{'±èÈñ¼±'}\n"; # 22¸¦ ¸®ÅÏ
print "$ages{'±èÈñ¾Ö'}\n"; # 34¸¦ ¸®ÅÏ
print "$ages{'õ»ç'}\n"; # 27À» ¸®ÅÏ
print "$ages{'²¿¸¶'}\n"; # "°¾ÆÁö ³ªÀÌ·Î 21"À» ¸®ÅÏ
print "$ages{'¿©¿Õ'}\n"; # 108À» ¸®ÅÏ
ÀÏ¹Ý ¹è¿°ú ¸¶Âù°¡Áö·Î % ±âÈ£´Â °³°³ÀÇ ¿ä¼Ò¸¦ ÂüÁ¶ÇÒ ¶§ $·Î º¯°æµÈ´Ù(°³°³ÀÇ ¿ä¼Ò´Â ½ºÄ®¶óÀ̹ǷÎ). ÀϹݹ述ú´Â ´Þ¸® ÂüÁ¶(ÀÌ °æ¿ì¿¡ »ç¶÷ÀÇ À̸§)´Â Áß°ýÈ£¸¦ »ç¿ëÇÑ´Ù. ¿¬°ü¹è¿À̶ó´Â °³³äÀº ÀϹݹ迺¸´Ù ³¸¼±°³³äÀÌÁö¸¸ ¾ÆÁÖ À¯¿ëÇÑ °³³ä´Ù.
¿¬°ü¹è¿ÀÇ Ãß°¡, º¯°æ
ÀÌ¹Ì ¼±¾ðµÇ¾îÀÖ´Â ¿¬°ü¹è¿¿¡ °ªÀ» Ãß°¡ÇϱâÀ§Çؼ´Â ´ÙÀ½°ú °°ÀÌ ÇØ´çµÇ´Â Å°¿¡ °ªÀ» ´ëÀÔÇÏ¸é µÈ´Ù.
$ages{'±èÈñ¼±'} = '23';
$ages{'ÆÃÆÃÀÌ'} = '25';
$newhash{'º¸¶÷ÀÌ'} = '26';
print "±èÈñ¼±: $ages{'±èÈñ¼±'}\n";
print "ÆÃÆÃÀÌ: $ages{'ÆÃÆÃÀÌ'}\n";
print "º¸¶÷ÀÌ: $newhash{'º¸¶÷ÀÌ'}\n";
¿¬°ü¹è¿¿¡ °ªÀ» ÇÒ´çÇϸé ÆÞÀº ÀÏ´Ü ÇØ´çµÇ´Â Å°°¡ ÀÖ´Â °¡¸¦ Á¶»çÇÑ´Ù. ¸¸¾à ÇØ´çµÇ´Â Å°°¡ ÀÖÀ¸¸é °ªÀ» º¯°æÇÏ°í ¾øÀ¸¸é »õ·Î¿î Å°=>°ªÀ» »ý¼ºÇϰԵȴÙ.
¶ÇÇÑ ÆÞÀº º¯¼ö¸¦ µû·Î ¼±¾ðÇÏÁö ¾Ê°í »ç¿ëÇÏ´Â ½ÃÁ¡¿¡¼ »ç¿ëÇÏ¸é µ¿ÀûÀ¸·Î »ý¼ºµÈ´Ù. µû¶ó¼ À§ÀÇ ¿¹¿¡¼´Â %newhash¶ó´Â ¿¬°ü¹è¿À» »õ·Î »ý¼ºÇϰԵȴÙ.
¿¬°ü¹è¿°ú ÀϹݹè¿ÀÇ º¯È¯
¿¬°ü¹è¿Àº ¿¬°ü¹è¿À» ÀϹݹ迿¡ ÇÒ´çÇÔÀ¸·Î¼ ÀϹݹ迷Πº¯È¯ÇÒ ¼ö ÀÖ´Ù. ÀϹݹè¿Àº ÀϹݹè¿À» ¿¬°ü¹è¿¿¡ ÇÒ´çÇÔÀ¸·Î¼ ¿¬°ü¹è¿·Î º¯È¯ÇÒ ¼ö ÀÖ´Ù. ÀÌ °æ¿ì ÀϹݹè¿Àº ¦¼öÀÇ ¹è¿¿ä¼Ò¸¦ °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù.
@info = %ages; # @infoÀº ÀϹݹè¿.
# ÀÌÁ¦ 10°³ÀÇ ¿ä¼Ò¸¦ °®´Â´Ù.
print "@info\n";
print "$info[5]\n"; # ÀÏ¹Ý¹è¿ @info·ÎºÎÅÍ 27À» ¸®ÅÏÇÑ´Ù.
%moreages = @info; # %moreages´Â ¿¬°ü¹è¿ÀÌ´Ù.
# ÀÌ°ÍÀº %ages¿Í µ¿ÀÏÇÏ´Ù.
print "$moreages{'±èÈñ¼±'}\n";
Å°¿Í °ªÀÇ »óÈ£±³È¯
¿¬°ü¹è¿Àº Å°¿¡ÀÇÇØ °ªÀ» ÂüÁ¶Çϱ⠶§¹®¿¡ Å°¸¦ °ªÀ¸·Î, °ªÀ» Å°·Î º¯È¯ÇÏ´Â °æ¿ì´Â °ÅÀÇ ¹ß»ýÇÏÁö ¾Ê´Â´Ù. ¶ÇÇÑ ÆÞÀº ÀÌ¿Í °°Àº ¿¬»êÀÚ¸¦ Á¦°øÇÏÁö ¾Ê´Â´Ù. ±×·¯³ª ¾Õ¼¹è¿î ÀϹݹ迷ÎÀÇ º¯È¯°ú reverseÇÔ¼ö¸¦ ÀÌ¿ëÇϸé Å°¿Í °ªÀ» »óÈ£ ±³È¯ÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù.
%reverse = reverse @info;
print $reverse{'22'}; # ±èÈñ¼±À» ¸®ÅÏ
¿¬»êÀÚ
¿¬°ü¹è¿Àº ¹è¿¿ä¼Ò¿¡ ¾î¶°ÇÑ ¼ø¼µµ °¡Áö°í ÀÖÁö ¾Ê´Ù(À̵éÀº Çؽ¬¿Í °°´Ù). ±×·¯³ª keys¿Í values ÇÔ¼ö¸¦ »ç¿ëÇؼ Â÷·Ê·Î ¸ðµç ¿ä¼Ò¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù.
foreach $person (keys %ages)
{
print "ÇÊÀÚ´Â $personÀÇ ³ªÀ̸¦ ¾Ë°í ÀÖ´Ù.\n";
}
foreach $age (values %ages)
{
print "$age»ìÀÌ´Ù.\n";
}
keys¸¦ È£ÃâÇÏ¸é ¿¬°ü¹è¿ÀÇ Å° ¸ñ·ÏÀ» ¸®ÅÏÇÑ´Ù. values¸¦ È£ÃâÇÏ¸é ¿¬°ü¹è¿ÀÇ °ªÀÇ ¸ñ·ÏÀ» ¸®ÅÏÇÑ´Ù. À̵é ÇÔ¼ö´Â µ¿ÀÏÇÑ ¼ø¼·Î ÀÌµé ¸ñ·Ï¸¦ ¸®ÅÏÇÏÁö¸¸ À̵éÀÇ ¼ø¼´Â ÀÌµé ¿ä¼Ò°¡ ÀÔ·ÂµÉ ¶§(¶Ç´Â ÇÒ´çµÉ ¶§)ÀÇ ¼ø¼¿Í ÀüÇô ¹«°üÇÏ´Ù.
keys¿Í values°¡ ½ºÄ®¶óȯ°æ¿¡¼ È£ÃâµÇ¸ç ¿¬°ü¹è¿³»ÀÇ Å°/°ªÀÇ ½ÖÀÇ ¼ö¸¦ ¸®ÅÏÇÑ´Ù. ¶ÇÇÑ Å°¿Í °ªÀÇ µÎ ¿ä¼Ò¸¦ ¸®ÅÏÇÏ´Â eachµµ Á¸ÀçÇÑ´Ù. each°¡ È£ÃâµÉ ¶§¸¶´Ù ´Ù¸¥ Å°/°ªÀÇ ½ÖÀÌ ¸®ÅϵȴÙ.
while (($person, $age) = each(%ages))
{
print "$person is $age\n";
}
°ü·Ê
¿¬°ü¹è¿Àº ¾ÆÁÖ À¯¿ëÇÑ °³³äÀÌÁö¸¸ ÀϹݹ述úÀÇ ÂüÁ¶»óÀÇ Â÷ÀÌ ¶§¹®¿¡ ¸¹Àº È¥¶õÀ» ¾ß±âÇÑ´Ù.
µû¶ó¼ ÀÌ·¯ÇÑ È¥¶õÀ» ÃÖ¼ÒÈÇϱâÀ§Çؼ´Â °¡±ÞÀû ¿¬°ü¹è¿ÀÇ ¹è¿¸íÀº ´ë¹®ÀÚ¸¦ »ç¿ëÇÏ´Â ÇÏ´Â °ÍÀÌ ÁÁ´Ù.
ȯ°æº¯¼ö
UNIX¿¡¼ ÆÞ ÇÁ·Î±×·¥À» ½ÇÇàÇϰųª ÀÓÀÇÀÇ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒ ¶§ ƯÁ¤ÇÑ È¯°æº¯¼ö¸¦ ¼³Á¤ÇÑ´Ù. À̵éÀº »ç¿ëÀÚÀÇ À̸§À» Æ÷ÇÔÇÏ´Â USERÀÏ ¼öµµ ÀÖÀ¸¸ç, ±×·¡ÇÈ È¸éÀ» Àü¼ÛÇÒ È¸éÀ» ÁöÁ¤ÇÏ´Â DISPLAYÀÏ ¼öµµ ÀÖ´Ù. WWW¿¡¼ ÆÞ CGI ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒ ¶§¿¡µµ ´Ù¸¥ À¯¿ëÇÑ Á¤º¸¸¦ Æ÷ÇÔÇϴ ȯ°æº¯¼ö°¡ Á¸ÀçÇÑ´Ù. ÀÌ·¯ÇÑ ¸ðµç ȯ°æº¯¼ö¿Í °ªÀº %ENV¶ó´Â ¿¬°ü¹è¿¿¡ ÀúÀåµÇ¸ç, À̶§ Å°´Â ȯ°æº¯¼öÀÇ À̸§ÀÌ´Ù. ÆÞ ÇÁ·Î±×·¥¿¡¼ ´ÙÀ½°ú °°Àº °ÍÀ» ½ÇÇàÇغ¸±â ¹Ù¶õ´Ù.
print "$ENV{'USER'}À̸ç ";
print "$ENV{'DISPLAY'}¸¦ Ãâ·ÂÀ¸·Î »ç¿ëÇÏ°í ÀÖ´Ù.\n";
¿¬°ü¹è¿ °ü·Ã ÇÔ¼ö
keys(%ARRAY)
%ARRAY³»ÀÇ ¸ðµç "Å°"ÀÇ ¸ñ·ÏÀ» ¸®ÅÏÇÑ´Ù. ÀÌ ¸ñ·ÏÀº ·£´ýÇϸç, ¼ø¼´Â ³»ºÎÀûÀ¸·Î »ç¿ëµÈ Çؽ¬ÇÔ¼ö¿¡ ÀÇÁ¸ÇÑ´Ù.
foreach $key (keys %ENV) {
print "$key = $ENV{$key}\n";
}
values(%ARRAY)
%ARRAY³»ÀÇ ¸ðµç "°ª"ÀÇ ¸ñ·ÏÀ» ¸®ÅÏÇÑ´Ù.
@key = keys %ENV;
@value = values %ENV;
while($#key >= 0) {
print pop(@key), ' = ', pop(@value), "\n";
}
each(%ARRAY)
%ARRAY·Î ÀÌ ÇÔ¼ö°¡ È£ÃâµÉ ¶§¸¶´Ù ¿¬°ü¹è¿ ³»ÀÇ ´ÙÀ½ "Å°/°ª" ½ÖÀ¸·Î ±¸¼ºµÈ µÎ°³ÀÇ ¿ä¼Ò¸¦ °®´Â ¸ñ·ÏÀ» ¸®ÅÏÇÑ´Ù.
while(($key, $value) = each %ENV) {
print "$key = $value\n";
}
delete($ARRAY{KEY})
ARRAY·ÎºÎÅÍ KEY¿Í ¿¬°üµÈ "Å°/°ª"ÀÇ ½ÖÀ» Á¦°ÅÇÑ´Ù.
delete($ENV{USER});
foreach $key (keys %ENV) {
print "$key = $ENV{$key}\n";
}
¿¬½À
ÇöÀç ½Ã½ºÅÛ¿¡ ¼³Á¤µÇ¾î ÀÖ´Â ¸ðµç ȯ°æº¯¼ö¸¦ Ãâ·ÂÇÏ´Â CGI ÇÁ·Î±×·¥À» ÀÛ¼ºÇ϶ó.
¿¬½À - ¹æ¸í·Ï
for ¹®°ú ¿¬°ü¹è¿À» ÀÌ¿ëÇؼ »ç¿ëÀÚÀÇ ÀԷµ¥ÀÌŸ¸¦ µðÄÚµù Çϵµ·Ï guest.cgi¸¦ º¯°æÇÑ´Ù.
µðÄÚµùÇÏ´Â ºÎºÐÀº ´ÙÀ½°ú ºñ½ÁÇÒ °ÍÀÌ´Ù.
@query = split(/&/, $query);
for(0..$#query) {
# +¸¦ °ø¹éÀ¸·Î º¯È¯
$query[$_] =~ s/\+/ /g;
($key, $value) = split(/=/, $query[$_]);
# %HH Çü½ÄÀ» À©·¡ÀÇ Æ¯¼ö ¹®ÀÚ·Î º¯È¯
# ÀÚ¼¼ÇÑ ¼³¸íÀº ¹®ÀÚ¿ ÀÏÄ¡, ´ëÄ¡¿Í º¯È¯, CGI ÀÔ·Â µðÄÚµùÀ» ÂüÁ¶ÇÑ´Ù.
$key =~ s/%(..)/pack("c", hex())/ge;
$value =~ s/%(..)/pack("c", hex())/ge;
$FORM{$key} = $value;
}
À§ÀÇ ·çƾÀ» ¼öÇàÇÏ¸é »ç¿ëÀÚÀÇ ÀԷµ¥ÀÌŸ´Â %FORMÀ̶ó´Â ¿¬°ü¹è¿¿¡ ÀúÀåµÈ´Ù. µû¶ó¼ $FORM{name1}°ú °°Àº Çü½ÄÀ¸·Î <FORM> µ¥ÀÌÅ͸¦ ÂüÁ¶ÇÒ ¼ö ÀְԵȴÙ.