LogIn E-mail
¼³°èÀ̾߱â
Perl Tip
# 79 JMJS    09.7.20 16:43

Perl µð¹ö°Å
> perl -d Sample.pl
½ÇÇàÈÄ¿¡
s <-- script¸¦ ÇÑÁÙ¾¿ ½ÇÇà
p $a <-- $aÀÇ °ªÀ» Ç¥½ÃÇØÁØ´Ù.
q <-- µð¹ö°Å Á¾·á
h <--- help
 
################### ¿¬»êÀÚ ###################
.. : ¹üÀ§ ¿¬»êÀÚ
@a = (); # ArrayÀ» ºñ¿ò
$b = $#a ; # ÷ÀÚÀÇ ÃÖ´ë°ª
$b = @a ; ArrayÀÇ ¼ö
delete $a{"name"}; # Ű name¸¦ %a¿¡¼­ »èÁ¦
\$a : $aÀÇ ¸Þ¸ð¸® ½ÇÁ¦ Address
\@a
\%a
 3°¡ÁöÀÇ ½ÇÁ¦ Address´Â ´Ù ´Ù¸§
$a = 10;
$b = \$a;
$c = $$b; #c´Â a¿Í °°À½
$b = \@a;
$d = $b->[0];
*a : º¯¼öÀ̸§ÀÌ aÀÎ ¸ðµç °ÍÀ» ³ªÅ¸³¿
$a = [1,2,3]; #¹«¸íArray
$a = {"one" => "ÀÏ"}; #¹«¸í ÇØ½Ã
@a = ([10,20],[30,40]); #$a[1][1]Àº 40ÀÓ
foreach $a(1,2,3) {..} # $a¿¡ ¸Å iteration ¸¶´Ù 1,2,3, ¼øÂ÷ÀûÀ¸·Î ÀúÀåµÊ

################### ·çÇÁÀÇ Áß´Ü ###################
last ; #ÇöÀç loop¸¦ Á¾·á
last LABEL ; #¶óº§ÀÌ ºÙÀº BlockÀ» Á¾·á
next ; #ÇöÀç loopÀÇ ½ÃÀÛÀ§Ä¡·Î Á¡ÇÁ
next LABEL ; #¶óº§ÀÌ ºÙÀº BlockÀÇ ½ÃÀÛ À§Ä¡·Î Á¡ÇÁ
redo ; #ÇöÀç loop BlockÀÇ Ã³À½À¸·Î µ¹¾Æ°¨
redo LABEL ; #¶óº§ÀÌ ºÙÀº Block¾ÈÀÇ Ã³À½À¸·Î Á¡ÇÁ
LABEL : while($a < 5) {
  :
redo LABEL ;
  :
} continue {...}

################### ¸ÞŸ¹®ÀÚ ###################
. : ÀÓÀÇÀÇ Çѹ®ÀÚ(Çà ¹Ù²ÞÀº Á¦¿Ü)
* : 0ȸ ÀÌ»ó ¹Ýº¹
+ : 1ȸ ÀÌ»ó ¹Ýº¹
? : 0ȸ ¶Ç´Â 1ȸ ¹Ýº¹
^ : ¼±µÎ
$ : ¸»¹Ì
| : ¼±ÅÃ
() : Á¤±ÔÇ¥Çö ±×·ì
[] : ¹®ÀÚ Å¬·¡½º
{n} : nȸ ¹Ýº¹
{n, } : nȸ ÀÌ»ó ¹Ýº¹
{n,m} : nȸ ÀÌ»ó mȸ ÀÌ»ó ¹Ýº¹
\ : ¸ÞŸ¹®ÀÚ¸¦ ¹®ÀÚ·Î Ãë±Þ
\w : ¿µ¹®ÀÚ, ¼ýÀÚ¿Í _
\W : ¿µ¹®ÀÚ, ¼ýÀÚ¿Í _ ÀÌ¿ÜÀÇ ¹®ÀÚ
\s : °ø¹é(¹Ý°¢ Space, ÅÇ, °³Çà)
\S : °ø¹éÀÌ¿Ü
\d : ¼ýÀÚ
\D : ¼ýÀÚ ÀÌ¿Ü

ÃÖÀå ¸ÅÄ¡, ÃÖ´Ü ¸ÅÄ¡
"abcabc" =~ /a.*c/ ; #abcabc ¸ÅÄ¡µÊ
"abcabc" =~ /a.*?c/ ; #abc ¸ÅÄ¡µÊ

ÆÐÅϸÅĪÀÇ °á°ú¸¦ ³ªÅ¸³»´Â Ư¼ö º¯¼ö
$& : ¸ÅÄ¡ÇÏ´Â String Àüü
$` : ¸ÅÄ¡ÇÏ´Â ºÎºÐº¸´Ù ¾Õ¿¡ ÀÖ´Â String
$' : ¸ÅÄ¡ÇÏ´Â ºÎºÐº¸´Ù µÚ¿¡ ÀÖ´Â String
$1, $2, ... : ù¹øÂ°, µÎ¹øÂ°, .. ±×·ì¿¡ ¸ÅÄ¡ÇÏ´Â String
$+ : ¸¶Áö¸· ±×·ì¿¡ ¸ÅÄ¡ÇÏ´Â String
 
¸ÅÄ¡¿¬»êÀÚ ¿É¼Ç $str =~ m/../../
g : ¸ÅÄ¡ÇÏ´Â °ÍÀ» ¸ðµÎ ã´Â´Ù.
i : ´ë¹®ÀÚ¿Í ¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â´Ù.
m : StringÀ» º¹¼öÇàÀ¸·Î Ãë±ÞÇÑ´Ù.
s : StringÀ» ´ÜÀÏÇàÀ¸·Î Ãë±ÞÇÑ´Ù.
x : ÆÐÅÏ ³»¿¡ Æ÷ÇԵǴ ¹Ý°¢ Space¸¦ ¹«½ÃÇÑ´Ù.

ġȯ¿¬»êÀÚ ¿É¼Ç : $str =~ s/../../
e : ġȯ ÈÄÀÇ StringÀ» ½ÄÀ¸·Î °£ÁÖÇÑ´Ù.
g : ¸ÅÄ¡ÇÏ´Â °ÍÀ» ¸ðµÎ ã´Â´Ù.
i : ´ë¹®ÀÚ¿Í ¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â´Ù.
m : StringÀ» º¹¼öÇàÀ¸·Î Ãë±ÞÇÑ´Ù.
s : StringÀ» ´ÜÀÏÇàÀ¸·Î Ãë±ÞÇÑ´Ù.
x : ÆÐÅÏ ³»¿¡ Æ÷ÇԵǴ ¹Ý°¢ Space¸¦ ¹«½ÃÇÑ´Ù.

º¯È¯¿¬»êÀÚ ¿É¼Ç : $str =~ tr/.../.../
c : º¯È¯ ´ë»óÀÎ String¿¡ Æ÷ÇÔµÇÁö ¾Ê´Â ¹®ÀÚ¸¦ º¯È¯ÇÑ´Ù.
d : º¯È¯ ÈÄÀÇ String¿¡ Æ÷ÇÔµÇÁö ¾Ê´Â ¹®ÀÚ¸¦ »èÁ¦ÇÑ´Ù.
s : Áߺ¹µÈ ¿¬¼Ó ¹®ÀÚ¸¦ 1¹®ÀÚ·Î º¯È¯ÇÑ´Ù.

s/(^.)/\U\1\E/ ; # ù¹øÂ° ¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î ¹Ù²ã¶ó, \U~\E»çÀÌ¿¡ µé¾î°£ ¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î ¹Ù²ã¶ó~

################### ¼­ºê·çƾ È£Ãâ ##################
sub ¼­ºê·çƾÀ̸§ {
...
return ;
}
$a = &¼­ºê·çƾÀ̸§(Àμö);

################### ÆÐŰÁö È£Ãâ ###################
package ÆÐŰÁö¸í1 ;
:
package ÆÐŰÁö¸í2;
:

EX)
$mypack = "main ÆÐŰÁö" ;
:
package pack1 ;
$mypack = "pack1 ÆÐŰÁö";
:
sub myprint{
...
}

package pack2 ;
:

print "$pack1::mypack\n";
&pack1::myprint();

################### º¯¼öÀÇ ¹üÀ§ ###################
my($a, @b, ...);
local($a, @b, ...); #¼­ºê·çƾ±îÁö ¿µÇâÀ» ¹Ìħ

################### Library¿Í Module ###################
1. Library
FileÀÇ È®ÀåÀÚ´Â .pl
File³¡¿¡ 1;¸¦ ±â¼úÇØ¾ßÇÔ.
ex)
package packl ;
$mypack = "Library" ;
:
1;
Library ÀоîµéÀ̱â
require "packl.pl" ;
print "$packl::mypack\n";

2. Module
FileÀÇ È®ÀåÀÚ´Â .pm
File³¡¿¡ 1;¸¦ ±â¼úÇØ¾ßÇÔ.
ex)
package packm ;
$mypack = "Module" ;
:
1;

Module ÀоîµéÀ̱â
use packm ;
print "$packm::mypack\n";

################### File Á¶ÀÛ ###################
binmode(FILE1) ; #File ÇÚµéÀ» ¹ÙÀ̳ʸ® Mode·Î ¼³Á¤

File Å×½ºÆ® ¿¬»êÀÚ
-e : FileÀÌ Á¸ÀçÇϸé Âü
-r : Àб⠰¡´ÉÀ̸é Âü
-w : ¾²±â °¡´ÉÀ̸é Âü
-z: File Å©±â°¡ 0À̸é Âü
-s : File Å©±â(FileÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é °ÅÁþ)
-T : ÅØ½ºÆ® FileÀ̸é Âü
-B : ¹ÙÀ̳ʸ® FileÀ̸é Âü

rename("file.txt", "newfile.txt"); #file.txt¸¦ newfile.txt·Î File¸í º¯°æ

unlink("file.txt"); #File »èÁ¦, »èÁ¦ÇÑ FileÀÇ ¼ö¸¦ Return"

################### ¹èŸÁ¦¾î ###################
flock(FLIE,2); #FILE FileÇڵ鿡 ¶ô°É±â(2)
flock(FLIE,8); #FILE FileÇڵ鿡 ¶ô ÇØÁ¦(8)
CGI(Common Gateway Interface) : À¥ºê¶ó¿ìÀú°¡ ¿äûÇϸé À¥¼­¹ö°¡ ProgramÀ» ½ÇÇàÇÏ´Â ±¸Á¶¸¦ ¸»ÇÔ
chomp($_); # ÁöÁ¤ÇÑ String ³¡ÀÇ °³Çà ¹®ÀÚ¸¦ »èÁ¦ÇÔ.

################### ȯ°æº¯¼ö ###################
foreach $key (keys %ENV) { print " $key : $ENV{$key}\n";}

################### ½Ã°£ ###################
$ct = time;
@now = localtime($ct);

################### ¼öÇÐ °ü·Ã ÇÔ¼ö ###################
abs($x);
sqrt($x); # Æò¹æ±Ù
exp($x); #eÁö¼ö
log($x);
sin($x); #´ÜÀ§´Â ¶óµð¾È
cos($x);
atan2($x);

$a = 2.58;
$b = int($a); # $b = 2

$a = rand(10); #0~10¹Ì¸¸ÀÇ ¹üÀ§ÀÇ ³­¼ö¸¦ ½Ç¼ö·Î Return
$a = rand(); #0~1¹Ì¸¸ÀÇ ¹üÀ§ÀÇ ³­¼ö¸¦ ½Ç¼ö·Î Return

srand(ÀÓÀÇÀÇ Á¤¼ö); #´ÙÀ½¿¡ ½ÇÇàÇÏ´Â randÇÔ¼öÀÇ ½Ãµå¸¦ ¼³Á¤ÇÔ.

################### StringÀ» Á¶ÀÛÇÏ´Â ÇÔ¼ö ###################
StringÀÇ ±æÀÌ
$str = length($a);

StringÀ» ÃßÃâÇϰųª ġȯ
$strl1= "ABCEF";
$strl2 = substr($strl1, 2,3); #2¹øÂ° ¹®ÀڷκÎÅÍ 3°³ÀÇ ¹®ÀÚ¸¦ Return

$strl1= "ABCEF";

$strl2 = substr($strl1, 2,3,"GGGG"); 2¹øÂ° ¹®ÀÚ·Î ºÎÅÍ 3°³ÀÇ ¹®ÀÚ¸¦ GGGG·Î ġȯ

StringÀÇ Ã¹ À§Ä¡ ±¸Çϱâ
$strl1= "ABCEF";

$strl2 = index($strl1, "E"); #E°¡ ÃÖÃÊ·Î ³ªÅ¸³»´Â À§Ä¡ 4¸¦ ReturnÇÑ´Ù. ¾øÀ» ¶§´Â -1¸¦ Return

StringÀ» ºÐÇÒÇÏ¿© ¸®½ºÆ®·Î ¸¸µé±â
@arr = split(/,/, "I,Love,Cat"); #±¸ºÐ ¹®ÀÚ ÆÐÅÏ ' À» ±âÁØÀ¸·Î ºÐÇÒÇÏ¿© ¸®½ºÆ®¿¡ ÀúÀåÇÑ´Ù

#$arr[0] = "I",$arr[1] = "Love",$arr[2] = "Cat"

################### Array¿¡ °üÇÑ ÇÔ¼ö ###################
$str = join(" ", ("I","Love","Cat"));
#$str = "I Love Cat"

@a = sort @b;
@a = reverse @b;
$x = pop @a;
$x = shift @a;
push @a, $y; #@a¿¡  $y¸¦ Ãß°¡. Arrayµµ Ãß°¡ÇÒ ¼ö ÀÖ´Ù.
unshift @a, $y; #@aÀÇ ¸Ç ¾Õ¿¡ $y¸¦ Ãß°¡. Arrayµµ Ãß°¡ÇÒ ¼ö ÀÖ´Ù.

@a = grep /^a.*/, @b ; # @bArray¿¡¼­ Á¤±ÔÇ¥Çö¿¡ ¸ÅÄ¡ÇÏ´Â ¿ä¼Ò¸¦ ÃßÃâÇÏ¿© @aArray¿¡ ÀúÀå

################### ¿¬»óArray¿¡ °üÇÑ ÇÔ¼ö ###################
@b = keys %a;
@b = value %a;
while(($k, $v) = each %a) { print "$k $v";}

$key = "name";
$b = exist $a{$key}; # %a¿¡ $key¶ó´Â key°¡ ÀÖ´ÂÁö Á¶»çÇÏ¿© 1 or 0À» ReturnÇÑ´Ù.

################### Directory °ü·Ã ÇÔ¼ö ###################
opendir(DIR, $dirname) || die "opendir Error!\n"; #DIRÀº Directory ÇÚµé¸í, $dirnameÀº Directory¸í

@alldir = readdir DIR; #Directory¿¡ Á¸ÀçÇÏ´Â FileÀÇ À̸§°ú DirectoryÀÇ À̸§À» Array¿¡ ÀúÀåÇÑ´Ù.ÇöÀçDirectory¿Í »óÀ§ Directoryµµ Æ÷ÇÔ
closedir(DIR);
$a = mkdir $dirname; #Directory »ý¼ºÀÌ ¼º°øÇϸé 1, ½ÇÆÐÇϸé 0À» º¯¼ö¿¡ ÀúÀåÇÑ´Ù.

$a = rmdir $dirname;
chdir $dirname || die "chdir Error!\n";

################### Program Á¦¾î¿¡ °üÇÑ ÇÔ¼ö ###################
$p = "1 + 1";
$a= eval($p); # $a´Â 1+1= 2ÀÌ´Ù
exit(0) ; # ProgramÀÌ Á¾·áÇÒ ¶§ System¿¡ Return °ªÀ» ÁöÁ¤ 0: Á¤»óÁ¾·á, ÀÌ¿Ü °ªÀº ÀÌ»óÁ¾·á.

die !; #Error°¡ ¹ß»ýÇϸé Error Message¸¦ Ãâ·ÂÇϰí ProgramÀ» Á¾·áÇÑ´Ù.

################### Data º¯°æ¿¡ °üÇÑ ÇÔ¼ö ###################
$a = hex("10"); # hexa:10 -> decimal:16
$a = chr(65); #$a='A'

°Ô½Ã¹°: 104 °Ç, ÇöÀç: 1 / 2 ÂÊ
¹øÈ£ Á¦       ¸ñ ÀÛ¼ºÀÚ µî·ÏÀÏ ¹æ¹®
111  alzipcon JMJS 22.11.26 33
110  file2date.pl JMJS 20.1.12 117
109  UTF-8, EUC-KR JMJS 19.12.15 112
108  wget.pl LWP Simple get JMJS 19.9.17 140
100  jsame.pl JMJS 09.5.21 1659
99  jos.pl JMJS 08.11.29 1386
98  jmngr.pl - jmjspro manager JMJS 08.11.29 1419
97  vhdl.pm JMJS 08.11.29 1393
96  jreg.pl JMJS 08.11.29 1392
95  jtree.pm JMJS 08.11.29 1449
94  w2c.pl JMJS 08.11.29 1404
93  jdread.pl JMJS 08.11.29 1202
92  ffile.zip ffilediff.pl JMJS 09.4.24 1255
91  rgb2ycbcr.pl JMJS 10.5.12 1542
90  proview.pl JMJS 08.11.29 1570
89  smi_shift.pl JMJS 10.10.3 1239
88  srt2smi.pl srtshift.pl JMJS 18.7.14 1409
87  Perl CGI Input Test, getenv.cgi JMJS 18.11.21 1063
86  opendir, readdir, closedir JMJS 08.10.12 1363
85  tr a-z A-Z JMJS 08.10.3 1166
84  JARRAY->jfunc JMJS 08.10.2 1155
83  ¼öÄ¡ÇÔ¼ö - ... JMJS 09.5.7 1603
82  ¿ªÇà·Ä3x3 JMJS 09.5.7 1685
81  hex2int.pl JMJS 10.9.12 2383
80  stat - file status º¸±â JMJS 07.12.16 1272
79  Perl Tip JMJS 09.7.20 2389
78  SMI file sync delay JMJS 07.7.18 1370
77  rmword.pl JMJS 07.6.18 1279
76  [Perl]package AP jinsung 07.2.28 1176
75  [Perl]read_dir.pl JMJS 07.2.22 1458
74  [Perl]jtab2char - tab¹®ÀÚ¸¦ ƯÁ¤ char·Î ¹Ù²ãÁÖ±â JMJS 07.2.22 1411
73  Perl ¼ýÀÚ Sorting JMJS 11.5.17 1518
72  [CGI]GET and POST JMJS 06.11.20 3186
71  Perl Grammer JMJS 06.9.4 2739
70  Ç¥ÁØ ¸ðµâ JMJS 06.8.10 1665
69  Getopt::Long example JMJS 06.8.10 1852
68  array of array JMJS 06.4.22 1268
67  [HTML]Å×ÀÌºí ¹è°æ¿¡ ±×¸²³Ö±â JMJS 06.3.8 1351
66  l2w.pm - line to word JMJS 08.12.1 1334
65  make_random_chars JMJS 05.8.10 1197
64  mail º¸³»´Â script JMJS 05.3.23 1152
63  ½ÇÇàÆÄÀÏÀ» ½ÇÇà½Ã۰í Ç¥ÁØ¿¡·¯ Àбâ JMJS 09.2.25 1167
62  ÆË¾÷â(°øÁöâ)¶ç¿ì±â Jinsung 03.12.16 2238
61  print <<ENDLINE JMJS 03.12.5 1257
60  [HTML]Target JMJS 03.5.21 1278
59  [Perl]jutil.pm JMJS 03.5.3 1525
58  [Perl]jdiff.pl JMJS 02.6.6 1419
57  [Perl]cfilter.pm - commant filter JMJS 02.1.31 1458
56  [HTML]ÀÚµ¿À¸·Î ´Ù¸¥ ÆäÀÌÁö À̵¿ JMJS 02.1.19 1307
55  Perl ¼³Ä¡Çϱâ - ActiveWare JMJS 02.1.16 1318
54  opendir , readdir , closedir JMJS 02.1.4 1343
53  rand_diff JMJS 01.10.23 1243
52  vcd2v.pl JMJS 15.8.25 1310
51  file upload JMJS 01.3.16 1262
50  umask(070) <- chmod o-rwx Áø¼º 01.3.16 1419
49  head2index Áø¼º 01.3.15 1126
48  grep.pl JMJS 11.1.20 1232
47  chr(13) = \M Áø¼º 01.3.15 1108
46  stty JMJS 01.3.12 1226
45  des.pl JMJS 01.3.8 1160
44  chr_plus.pl JMJS 01.3.8 1186
43  get passwd in unix JMJS 19.8.18 1049
42  unsort JMJS 19.9.10 1290
41  read from website web JMJS 19.5.15 1074
40  vec JMJS 01.3.8 1344
39  chomp $_ @_ say defined use 5.010 state grep any ... JMJS 18.10.27 1249
38  [Perl Tk] µµ½ºÃ¢ ¾øÀÌ, ÆÞ Tk ½ºÅ©¸³Æ® ½ÇÇàÇϱâ; ... JMJS 17.9.30 1210
37  @bs = sort {$a <=> $b} @as; JMJS 17.7.12 1295
36  if ( -e -z -s -f -d -T -B -M ) JMJS 16.3.10 1367
35  mkmm.pl - make freemind JMJS 12.5.22 1319
34  perl -pi.orig -e "s/\bu_(\w+_t)\b/u$1/g" *.c JMJS 11.8.26 1325
33  .xls output csv ÆÄÀÏ¿¡ \n "°¡ ÀÖÀ»¶§ JMJS 11.4.13 1194
32  jdcat.pl juncat.pl JMJS 11.2.24 1341
31  print chr(ord('a')); JMJS 01.3.8 1260
30  require "/user/home/jin1/jin1.pm"; JMJS 00.11.28 1201
29  for(my $i=0; $i < @abc; $i ++) {} JMJS 00.11.15 1297
28  remove blank $abc =~ s/[\s]+//g; JMJS 00.11.15 1243
27  array and for JMJS 00.11.14 1088
26  È¨ÆäÀÌÁö ÀÚµ¿ À̵¿ JMJS 00.10.28 1130
25  html¿¡¼­ ¾²ÀÌ´Â ±âȣǥ½Ã¹æ¹ý JMJS 00.9.30 1086
24  ¹è¿­ÀÇ ¹üÀ§ ¿¬»êÀÚ JMJS 00.9.20 1385
23  for(1..3) { print "$_";} JMJS 09.4.24 1080
22  package JMJS 00.9.18 1126
21  ÁÙ¿¡¼­ ÇѱÛÀÚ °íÄ¡±â JMJS 00.8.7 1195
20  hotkey function by getc JMJS 00.7.21 1290
19  read, sysread, syswrite JMJS 00.7.21 2097
18  crypt JMJS 00.7.13 1400
17  csv2gan.pl JMJS 11.4.4 1411
16  hexa JMJS 00.7.7 1239
15  file in out.pl JMJS 00.7.5 1423
14  ARGV JMJS 00.7.5 1273
13  jtime.pm - localtime, timelocal JMJS 09.4.9 1764
12  @INC JMJS 00.7.5 1617
11  $#myarray JMJS 00.7.5 1373
10  Hash of Array JMJS 00.7.5 1182
9  package JARRAY JHASH JMJS 00.7.4 1421
8  foreach, while each, dos2unix.pl, next last JMJS 09.4.24 1368
7  Ä¡È¯ ÀüÀÌ JMJS 00.7.4 1198
6  file lock JMJS 00.7.4 1314
5  gettime JMJS 00.7.4 1272
[1] [2]