원문: http://www.milw0rm.com/papers/89
Perl Underground 2: Judgement Day
Judgement: 재판, 심판
AKA :also known as
Naïve Sorting
@sorted = sort { $a <=> $b } @numbers; # ascending order
@sorted = sort { $b <=> $a } @numbers; # descending order
정렬에 사용되는 두 가지 특수한 변수
$a ,
$b.
그 순간에 비교되는 것들을 대표한다.
$a 가 $b 보다 앞에 있으면 -1 을 반환,
같으면 0을 반환, 뒤에 있으면 1을 반환한다.
@sorted = sort { $a cmp $b } @unsorted;
@sorted = sort @unsorted;
@sorted = sort { lc($a) cmp lc($b) }
@unsorted;
@sorted = sort { uc($a) cmp uc($b) }
@unsorted;
$k = !!$k; #
turn any true value into 1
참이면 1로 바꾼다.
my $c = substr $_, $k, 1; # get char
Step 1. 데이터를
바꿔라.
@transformed = map { [ $_, split /:/ ] } @entries;
For 루프로 쓸
수 있지만, map() 을 아는 것은 펄에서 강력한 도구가 될 수 있다.
for
(@entries) {
push @transformed, [ $_, split /:/ ];
}
Step 2. 데이터를
정렬하라.
[1] : 사용자 이름
[3] : 쉘
[4] : 이름
@transformed = sort {
$a->[3] cmp $b->[3]
or
$a->[4] cmp $b->[4]
or
$a->[1] cmp $b->[1]
}
@transformed;
#
"\L...\E" 는 lc(...) 와
같다.
@normalized = map { "\L$_\E$NUL$_" } @original;
sub main::urlEncode {
# sub main::urlEncode looks so much more
elite than sub urlEncode
my
($string) = @_;
$string =~ s/(\W)/"%" . unpack("H2", $1)/ge;
#$string# =~ tr/.//;
return $string;
}
PHP
Perl
Superglobal Yes
Yes
Global Yes
Yes
Function local Yes Yes
Lexical (block local) No
Yes
Dynamic No
Yes
$result
= $x =~ /foo/;
이것은 아래의 것을 의미한다.
$result
= ($x =~ /foo/);
$p
= ($q =~ s/w//g);
‘w’는 모두
제거되고, 제거된 개수가 $p에 저장된다.
($p
= $q) =~ s/w//g;
$q 의 값은
모두 $p에 복사되고, $p 의 ‘w’는 모두 제거 된다.
Arithmetic: +, -, *, /, %, **
Bitwise: &, |, ~, <<, >>
Logical: &&, ||, !
Comparison: ==, !=, >=, <=, >, <
Assignment: =, +=, -=, *=, /=, etc.
chomp $host;
#
chomp (my $host = <STDIN>);
if ($host eq
""){$host="127.0.0.1"};
#
$host ||= "127.0.0.1";
if ($port =~/\D/ ){$port="80"};
if ($port eq "" ) {$port =
"80"};
# 숫자에 따옴표
치지 말자~
print
"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
# we have x, print "\n" x big_int; use it
$probe = "string";
# my $probe = "your shit code";
for ($X=0; $X<=10; $X++){
# for my $x (0 .. 10) {
if (defined $output){
# if ($output) { # NOOB
my $choice = "y";
chomp $choice;
# ……..그래… chomp …..근데……..왜???
-[0x0C] # Intermission -----------------------------------------------
Intermission: 중절, 막간, 쉬는시간,
Pitfall : 함정, 덫, 책략, 도사리고
있는 위험
my $clobber = lc((defined($ARGV[1]) ? $ARGV[1] :
'eax'));
my $style = lc((defined($ARGV[2]) ? $ARGV[2] :
'intel'));
my $current = $ARGV[0];
# my
$current = shift;
# my
$clobber = shift || 'eax';
# my
$style = shift || 'intel';
Envision : -을 상상하다. 이리저리 생각하다.
SCALAR - scalar variables
ARRAY - array variables
HASH - hash variables
CODE - subroutines
IO - directory/file handles
FORMAT - formats
Manifesto : 선언(서), 성명(서), 정책
'Programming > Perl' 카테고리의 다른 글
The 2008 Winter Scripting Games / Beginner Event 1: Pairing Off (0) | 2009.05.23 |
---|---|
pl- 시저의 암호 (0) | 2009.05.16 |
perl underground 1-3 (0) | 2009.05.02 |
perl underground 1-2 (0) | 2009.05.01 |
perl underground 1-1 (0) | 2009.04.30 |
댓글