LogIn E-mail
¼³°èÀ̾߱â
Perl Tip
# 79 JMJS    24.6.22 12:12

Perl µð¹ö°Å
> perl -d Sample.pl
½ÇÇàÈÄ¿¡
s <-- script¸¦ ÇÑÁÙ¾¿ ½ÇÇà
p $a <-- $aÀÇ °ªÀ» Ç¥½ÃÇØÁØ´Ù.
q <-- µð¹ö°Å Á¾·á
h <--- help

#!/usr/bin/perl -w
-w  Warning
 
################### ¿¬»êÀÚ ###################
.. : ¹üÀ§ ¿¬»êÀÚ
@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'

°Ô½Ã¹°: 115 °Ç, ÇöÀç: 1 / 1 ÂÊ
¹øÈ£ Á¦       ¸ñ ÀÛ¼ºÀÚ µî·ÏÀÏ ¹æ¹®
115  perl format JMJS 24.6.22 211
114  perl -p -i -e s/abc/def/g JMJS 24.3.26 219
113  Deleting from a Hash JMJS 24.1.23 236
112  yaml file Àбâ JMJS 23.11.30 269
111  alzipcon JMJS 22.11.26 328
110  file2date.pl JMJS 24.6.1 442
109  UTF-8, EUC-KR JMJS 19.12.15 406
108  wget.pl LWP Simple get JMJS 19.9.17 436
107  X JMJS 19.9.17 427
106  X JMJS 19.9.17 433
105  X JMJS 19.9.17 422
104  X JMJS 19.9.17 426
103  X JMJS 19.9.17 422
102  X JMJS 19.9.17 419
101  X JMJS 19.9.17 424
100  jsame.pl JMJS 09.5.21 1945
99  jos.pl JMJS 08.11.29 1685
98  jmngr.pl - jmjspro manager JMJS 08.11.29 1720
97  vhdl.pm JMJS 08.11.29 1692
96  jreg.pl JMJS 08.11.29 1669
95  jtree.pm JMJS 08.11.29 1753
94  w2c.pl JMJS 08.11.29 1708
93  jdread.pl JMJS 08.11.29 1485
92  ffile.zip ffilediff.pl JMJS 09.4.24 1537
91  rgb2ycbcr.pl JMJS 10.5.12 1850
90  proview.pl JMJS 08.11.29 1908
89  smi_shift.pl JMJS 10.10.3 1515
88  srt2smi.pl srtshift.pl JMJS 18.7.14 1715
87  Perl CGI Input Test, getenv.cgi JMJS 18.11.21 1403
86  hash JMJS 24.6.22 1661
85  tr a-z A-Z ġȯ , ´ë¼Ò¹®ÀÚ º¯È¯ , ¹®ÀÚ¿­ Á¶°Ç , ... JMJS 24.6.22 1459
84  JARRAY->jfunc JMJS 08.10.2 1428
83  ¼öÄ¡ÇÔ¼ö - ... JMJS 09.5.7 1903
82  ¿ªÇà·Ä3x3 JMJS 09.5.7 1947
81  hex2int.pl JMJS 10.9.12 2678
80  stat - file status º¸±â JMJS 07.12.16 1535
79  Perl Tip JMJS 24.6.22 2698
78  SMI file sync delay JMJS 07.7.18 1641
77  rmword.pl JMJS 07.6.18 1558
76  pack unpack JMJS 24.6.22 1462
75  [Perl]read_dir.pl JMJS 07.2.22 1745
74  [Perl]jtab2char - tab¹®ÀÚ¸¦ ƯÁ¤ char·Î ¹Ù²ãÁÖ±â JMJS 07.2.22 1716
73  Perl ¼ýÀÚ Sorting JMJS 11.5.17 1799
72  [CGI]GET and POST JMJS 06.11.20 3458
71  Perl Grammer JMJS 06.9.4 3039
70  Ç¥ÁØ ¸ðµâ JMJS 06.8.10 1934
69  Getopt::Long example JMJS 06.8.10 2128
68  array of array JMJS 06.4.22 1541
67  [HTML]Å×ÀÌºí ¹è°æ¿¡ ±×¸²³Ö±â JMJS 06.3.8 1627
66  l2w.pm - line to word JMJS 08.12.1 1618
65  make_random_chars JMJS 05.8.10 1455
64  mail º¸³»´Â script JMJS 05.3.23 1432
63  ½ÇÇàÆÄÀÏÀ» ½ÇÇà½Ã۰í Ç¥ÁØ¿¡·¯ Àбâ JMJS 09.2.25 1433
62  ÆË¾÷â(°øÁöâ)¶ç¿ì±â Jinsung 03.12.16 2531
61  print <<ENDLINE JMJS 03.12.5 1533
60  [HTML]Target JMJS 03.5.21 1561
59  [Perl]jutil.pm JMJS 03.5.3 1812
58  [Perl]jdiff.pl JMJS 02.6.6 1707
57  [Perl]cfilter.pm - commant filter JMJS 02.1.31 1749
56  [HTML]ÀÚµ¿À¸·Î ´Ù¸¥ ÆäÀÌÁö À̵¿ JMJS 02.1.19 1572
55  STDIN file open glob -w warning JMJS 24.6.22 1611
54  opendir , readdir , closedir JMJS 24.6.22 1617
53  rand_diff JMJS 01.10.23 1509
52  vcd2v.pl JMJS 15.8.25 1591
51  file upload JMJS 24.6.22 1528
50  umask(070) <- chmod o-rwx Áø¼º 01.3.16 1680
49  head2index Áø¼º 01.3.15 1375
48  grep.pl JMJS 11.1.20 1514
47  chr(13) = \M Áø¼º 01.3.15 1375
46  stty JMJS 01.3.12 1485
45  des.pl JMJS 01.3.8 1455
44  chr_plus.pl JMJS 01.3.8 1465
43  get passwd in unix JMJS 19.8.18 1308
42  unsort JMJS 19.9.10 1544
41  read from website web JMJS 19.5.15 1355
40  vec JMJS 01.3.8 1612
39  chomp $_ @_ say defined use 5.010 state grep any ... JMJS 18.10.27 1532
38  [Perl Tk] µµ½ºÃ¢ ¾øÀÌ, ÆÞ Tk ½ºÅ©¸³Æ® ½ÇÇàÇϱâ; ... JMJS 17.9.30 1490
37  @bs = sort {$a <=> $b} @as; JMJS 17.7.12 1558
36  if ( -e -z -s -f -d -T -B -M ) JMJS 16.3.10 1656
35  mkmm.pl - make freemind JMJS 12.5.22 1605
34  perl -pi.orig -e "s/\bu_(\w+_t)\b/u$1/g" *.c JMJS 11.8.26 1586
33  .xls output csv ÆÄÀÏ¿¡ \n "°¡ ÀÖÀ»¶§ JMJS 11.4.13 1479
32  jdcat.pl juncat.pl JMJS 11.2.24 1631
31  print chr(ord('a')); JMJS 01.3.8 1533
30  require "/user/home/jin1/jin1.pm"; JMJS 00.11.28 1475
29  for(my $i=0; $i < @abc; $i ++) {} JMJS 00.11.15 1559
28  remove blank $abc =~ s/[\s]+//g; JMJS 00.11.15 1504
27  array and for JMJS 00.11.14 1349
26  È¨ÆäÀÌÁö ÀÚµ¿ À̵¿ JMJS 00.10.28 1406
25  html¿¡¼­ ¾²ÀÌ´Â ±âȣǥ½Ã¹æ¹ý JMJS 00.9.30 1360
24  ¹è¿­ÀÇ ¹üÀ§ ¿¬»êÀÚ JMJS 00.9.20 1658
23  for(1..3) { print "$_";} JMJS 09.4.24 1334
22  package JMJS 24.6.22 1413
21  ÁÙ¿¡¼­ ÇѱÛÀÚ °íÄ¡±â JMJS 00.8.7 1455
20  hotkey function by getc JMJS 00.7.21 1563
19  read, sysread, syswrite JMJS 00.7.21 2375
18  crypt JMJS 00.7.13 1672
17  csv2gan.pl JMJS 11.4.4 1683
16  hexa JMJS 24.6.18 1507
15  file in out.pl JMJS 00.7.5 1693
14  ARGV JMJS 00.7.5 1519
13  jtime.pm - localtime, timelocal JMJS 09.4.9 2046
12  @INC JMJS 00.7.5 1876
11  $#myarray JMJS 00.7.5 1632
10  Hash of Array JMJS 00.7.5 1457
9  package JARRAY JHASH JMJS 00.7.4 1695
8  foreach, while each, dos2unix.pl, next last JMJS 09.4.24 1679
7  base64 enc dec binary JMJS 09:07 1482
6  file lock JMJS 00.7.4 1594
5  gettime JMJS 00.7.4 1567
4  [Perl]jcdread.pl JMJS 00.7.4 1649
3  [Perl]jdread.pl JMJS 00.7.4 1546
2  Monti Hall problem JMJS 24.6.27 1544
1  DESTROY JMJS 09.7.20 1486
[1]