본문 바로가기
Programming/Perl

Perl Underground 2

by NAMP 2009. 5. 2.

원문: 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

댓글