�۾��� Guido Socher �۾��� �Ұ�: Guido�� �������� ������ ���̾��� Perl ��Ŀ����. ���� �״� ���� ���Ӱ� �����ϰ� ������ ������� �ٸ� �͵��� �ɾ� Ű��µ� ��ô �ٻڴ�. ����: |
���:
Perl ù��°������ ���� �Ϲ����� ������ ���캸�Ҵ�.
perl part II������ ù��° �������� ���α��� �ۼ��Ѵ�.
!/usr/bin/perl -w
# vim: set sw=8 ts=8 si et: # # uncomment strict to make the perl compiler very # strict about declarations: #use strict; # global variables: use vars qw($opt_h); use Getopt::Std; # &getopts("h")||die "ERROR: No such option. -h for help\n"; &help if ($opt_h); # #>>your code<< # #-=-=-=-=-=-=-=-=-=-=-=-=-=-=- sub help{ print "help message\n"; exit; } #-=-=-=-=-=-=-=-=-=-=-=-=-=-=- __END__ |
�ڵ带 ���� &getopts()�� ���ɾ� �ɼ��� �б� ���� ���̺귯�� Getopt::Std
�� �ִ� �����ƾ�� ȣ���Ѵ�. �� �Լ��� ���ɾ� �ɼǿ� ���� ������ ���� ���� $opt_<option>��
�����Ѵ�.
���ɾ� ���� ��� �ɼ��� "-" (minus sign)���� �����ϰ� ���α� �̸��� �ٸ� ���� ���̿� �´�.
(Note: �̰��� �Ϲ����� Unix ��Ģ�̴�.)
&getopts�� �־��� ���ڿ�(���� ���α������� "h")�� ���α��� ����ϴ� ���
�ɼ��� �����ϰ�, ���� �ɼ��� �ݷ����� �� ������ ������ �ִٸ� �ɼ� ���ڴ� �ݵ�� �ݷеڿ� �־�� �Ѵ�.
&getsopt("d:x:h")�� ���α��� -d, -x, -h��� �ɼ��� ������ �ִٴ� �ǹ��̴�.
�ɼ� -d�� -x�� �ƱԸ�Ʈ�� ������ �ֱ� ������ "-o somgthing"�� �´� ��������
"-o -x foo"�� -o �ڿ� �ƱԸ�Ʈ�� ���� ������ Ʋ�����̴�.
���� �ɼ� -h�� ���ɾ�� �־����ٸ� $opt_h������ &help�� ��������.
���� ($opt_h);�� help�� �������Ƿ� �ɼ� -h�� ���ɾ�� �־�����
�����ƾ help�� �ҷ����ٰ� �� �� �ִ�.
sub help{������ �����ƾ�� �����ϴ� ���̴�. ���� �̼���
�� ��� �ڵ��� �ڼ��� �κ��� �����ϴ� ���� �߿�ġ �ʴ�. ���� �ʿ��Ҷ� �����
�ֿ� ��ɿ� �� template�� ����� �� ������ �ȴ�.
#!/usr/bin/perl -w
# vim: set sw=8 ts=8 si et: # # uncomment strict to make the perl compiler very # strict about declarations: #use strict; # global variables: use vars qw($opt_d $opt_x $opt_h); use Getopt::Std; # &getopts("d:x:h")||die "ERROR: No such option. -h for help\n"; &help if ($opt_h); if ($opt_d && $opt_x){ die "ERROR: options -x and -d are mutual exclusive.\n"; } if ($opt_d){ printf("decimal: %d\n",hex($opt_d)); }elsif ($opt_x){ printf("hex: %X\n",$opt_x); }else{ # wrong usage -d or -x must be given: &help; } #-=-=-=-=-=-=-=-=-=-=-=-=-=-=- sub help{ print "convert a number to hex or dec. USAGE: numconv [-h] -d hexnum umconv [-h] -x decnum OPTIONS: -h this help
|
����
numconv���α��� �ٿ�ε� �������� Ŭ���Ͻÿ�.
���� �忡���� �츮�� �� ���α��� ���� ���� ģ���������̴�. ������ �α⸦ �ٶ���.
BLOCK�� {}�ȿ� �ִ� ������ ���� �ǹ��Ѵ�. �̰��� If������ ������ ����
���� �� �ִٴ� ���� �ǹ��Ѵ�.:
printf("hello\n") if ($i);
if ($i == 2){
|
������ C���� ���� ��ó�� && �� || �����ڸ� �� �� �ִ�.
printf("hello\n") if ($i);
���� ���� �ڵ�� �Ʒ��� ���� ���� �� �ִ�.
($i) && printf("hello\n");
Ư���� ||�� template�ȿ��� ���� �� ����ȿ� �� �� �� �ִ�.
&getopts("d:x:h")||die "ERROR\n";
"�ɼ��� ������ �������� ������ ������.". die() �Լ��� �⺻������ ���α��� ������
����Ʈ ���� �����ϴ� �Ͱ� ���� ����� �Ѵ�. �� �Լ��� ������ ����Ʈ�ϰ� ���α���
������ �ȴ�.
&getopts("d:x:h")||die "ERROR\n";
�̰��� ������ ���� �����̴�.
die "ERROR\n"; if (! &getopts("d:x:h"));
"!"�� ���������� ���� �������̴�. �ٽ� �̰��� ������ ���� ���� �� �ִ�.
die "ERROR\n"; unless (&getopts("d:x:h"));
unless�� if-not�� ���� ���̰� if(!..) ���� �бⰡ ���ϴ�.
����� ���Ͱ� ���� ������ if-������ ���µ� �Ѱ��� ����� �ִ°��� �ƴϴ�.
�� ��� ����� �� �� �ʿ�� ����, ����� ��� ���� ����� ���� �ȴ�.
|
#!/usr/bin/perl
use strict; my $i=1; print "i is $i\n"; |
�� ���α��� ��Ȯ�ϰ� i�� 1�̶�� ����� ����Ѵ�. ���� �Ǽ��� ���� i ��ſ� j�� ��ٰ� �����ϸ�:
#!/usr/bin/perl
# $i=1; print "i is $j\n"; |
�� �ڵ�� ���� �� ����ɰ��̰� "i is "��� ����� ����Ѵ�.
�� ��� "use strict;"�� �����Ϸ����� �̷��� ���α��� �߸���ٴ� ���� �˸���.
"strict"�� ���� ��� ������ ����Ǿ� �ǰ� ���� ���α��� ���� ������ ��µȴ�.
#!/usr/bin/perl
use strict; my $i=1; print "i is $j\n"; |
�� ���α��� ������ ���� ������ ����ϰ� ���� ����� ���� �Ѵ�.
Global symbol "$j" requires explicit package name at ./vardec line 4. Execution of ./vardec aborted due to compilation errors. Exit 255���� ������ "my"�� ����Ͽ� ����ǰų� framework���� ���ΰͰ� ���� "use vars qw()"�� ����Ͽ� ����ȴ�.:
���� ������ use vars�� ���� ����ȴ�.
�̷��� �������� ���̺귯���� �����ϴ� ��� �ڵ忡�� �������̴�.
���� ���α� ȭ�Ͼȿ��� �������� ����(ȭ�Ͼ��� ��� �����ƾ�ȿ�����
�������̴�.)�� �����ƾ �ٱ��� ���α��� ���ۺκп� my
�� ����Ͽ� ����ȴ�.
���� �����ƾ �ȿ��� �������� ������ �����ƾ �ȿ���
my�� ����Ͽ� ����ȴ�.
������� �� ���α��ֿ��� ������ �����ϰų� ���� �Ҵ��� �� $ ǥ�ø� ���� �ϴ� ������ �ִ�. �̰��� ������ �Ұ����ϸ� ��Į�� ������ ����Ҷ��� �� $ ǥ�ø� ����Ѵ�.
���� ������ �����Ҷ� ���� ���� �Ҵ��Ҷ��� ���� �� �ִ�.
my $myvar=10; �� $myvar�� �����ϰ� �� ������ �ʱⰪ���� 10�� �Ҵ�
�Ѵٴ� �ǹ��̴�.
#!/usr/bin/perl
use strict; my $result; my $b; my $a; $result=&add_and_duplicate(2,3); print "2*(2+3) is $result\n"; $b=5;$a=10;
# add two numbers and multiply with 2:
|
|
AC Access Class AC Air Conditioning AFC Automatic Frequency Control AFS Andrew File System ...�� ����Ʈ ȭ���� �̰����� �ٿ�ε� �� �� �ִ�. �� ������ ������ ������ ����.:
.... open(FD,"abb.txt")||die "ERROR: can not read file abb.txt\n"; while( #do something } close FD; .... |
open �Լ��� ���� �����ڸ� ù��° �������ڷ� ���� ���� �̸��� �ι�°
�������ڷ� ������. ���� �����ڴ� Ư���� �����̴�. �̰��� open�Լ��� ����
�Լ� �ȿ��� ���Ͼȿ��� �ڷḦ ���� �� �ְ�, ���������� close �Լ��� �����Ѵ�.
<FD>�� ������ �д� ���� ������ <FD>�� while loop�� ���ڷ� �־��� �� �ְ�
�̰�� �� ������ ������ �дµ� ���ǰ� �ȴ�.
���������� ���� �����ڴ� ���� �빮�ڷ� ǥ�õȴ�.
������ �ڷ�� ��� ������? ���� ����� �������� ������ ������ �ִ�.
�̷� �������� ���� ���� ���̴µ� �� �����Ѵ�. ���� �Ѱ����� $_ ������ �ִ�.
�� ������ ���� while loop���� ���� �о���� �� ������ ������ ������ �ִ�.
�ѹ� ������ �ڵ带 ���� �غ��⸦:(�ڵ� �ޱ�
):
#!/usr/bin/perl
use strict; my $i=0; open(FD,"abb.txt")||die "ERROR: can not read file abb.txt\n"; while(<FD>){ # increment the line counter. You probably # know the ++ from C: $i++; print "Line $i is $_"; } close FD; |
|
���̴� ��ó�� ���� �ڵ�� print "Line $i is $_ \n"�� ���� ������ �ʾҴµ�, �̰��� $_ ������ �ؽ�Ʈ ȭ�� �ȿ��� ���� ����(\n)�� ���� �о� �鿴�� �����̴�.
���� �츮�� ������ �д� ����� �˾Ҵ�. Ȯ���ϰ� �츮�� ���α��� ������ ���ؼ��� �츮�� �ΰ��� ������ �� ����� �Ѵ�.
#!/usr/bin/perl -w
# vim: set sw=8 ts=8 si et: # use strict; # global variables: use vars qw($opt_h); my $i=0; use Getopt::Std; # &getopts("h")||die "ERROR: No such option. -h for help.n"; &help if ($opt_h); # open(FD,"abb.txt")||die "ERROR: can not read file abb.txt\n"; while(<FD>){ $i++; if (m/^(\S+)\s/){ # $1 holds now the first word (\S+) print "$1 is the abbreviation on line $i\n"; }else{ print "Line $i does not start with an abbreviation\n"; } } close FD; # #-=-=-=-=-=-=-=-=-=-=-=-=-=-=- sub help{ print "help text\n"; exit; } #-=-=-=-=-=-=-=-=-=-=-=-=-=-=- __END__ |
���� ���� ǥ���� ���� ���ο� ���������� ������ �Ǹ�, ��ġ ������ (m/ /)��
1�� ��ȯ�մϴ�. ���Ƿ�, if-����ȿ� �� ���� ����� �� �ֽ��ϴ�.
$1 ������ ������ Ȯ���� �ڷᰡ �ִ��� Ȯ�εǾ� �ϱ� ������ $1 �������� ����ϱ� ����
�� �� ��ġ �����ڿ� if-������ ����Ͽ��� �Ѵ�.
#!/usr/bin/perl -w
my %htab; my $index; # load the hash with data: $htab{"something"}="value of something"; $htab{"somethingelse"}=42; # get the data back: $index="something"; print "%htab at index \"$index\" is $htab{$index}\n"; $index="somethingelse"; print "%htab at index \"$index\" is $htab{$index}\n"; |
�� ���α��� ����ɶ� �츮�� ���� �� �ִ� ����:
%htab at index "something"�� "value of something"�̰� %htab at index "somethingelse" �� 42��� ���̴�.���� �츮�� ���α��� ���� ����:
1 #!/usr/bin/perl -w
2 # vim: set sw=4 ts=4 si et: 3 # 4 use strict; 5 # global variables: 6 use vars qw($opt_h); 7 my %htab; 8 use Getopt::Std; 9 # 10 &getopts("h")||die "ERROR: No such option. -h for help.n"; 11 &help if ($opt_h); 12 # 13 open(FD,"abb.txt")||die "ERROR: can not read file abb.txt\n"; 14 print "Abbreviations with several meanings in file abb.txt:\n"; 15 while(<FD>){ 16 if (m/^(\S+)\s/){ 17 # we use the first word as index to the hash: 18 if ($htab{$1}){ 19 # again this abbrev: 20 if ($htab{$1} eq "_repeated_"){ 21 print; # same as print "$_"; 22 }else{ 23 # this is the first duplicate we print first 24 # occurance of this abbreviation: 25 print $htab{$1}; 26 # print the abbreviation line that we are currently reading: 27 print; 28 # mark as repeated (= appears at least twice) 29 $htab{$1}="_repeated_"; 30 } 31 }else{ 32 # the first time we load the whole line: 33 $htab{$1}=$_; 34 } 35 } 36 } 37 close FD; 38 # 39 #-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 40 sub help{ 41 print "finddup -- Find abbreviations with several meanins in the 42 file abb.txt. The lines in this file must have the format: 43 abrev meaning 44 \n"; 45 exit; 46 } 47 #-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 48 __END__ |
�� ���α��� ��� �۵��ϴ°�? �� ���α��� ���� ������ ������ �а�, �� ������ %htab (line 33)��� �ؽ� ���̺��� �����Ѵ�. How does it work? We read the file line by line and store the lines in our hash called %htab (line 33). �ؽ� ���̺��� �ε����� ����̴�. �ؽ� ���̺��� ����ϱ� ���� �� �ȿ� �ٸ� ���� ����Ǿ� �ִ��� Ȯ���Ѵ�. (line 18). ���� �ؽ� ���̺��ȿ� �ٸ� ���� ������ �� ���� ���ɼ��� �ִ�.
�� �ڵ��
�������� �ٿ� ���� �� �ְ� �ѹ� ������ ���⸦ �ٶ���.
�� �� �������� ��������Ŀ�� ������ ���� ���� ���� �˴ϴ�.
© Guido Socher LinuxFocus 1999 |
��������:
|
1999-11-01, generated by lfparser version 0.8