본문 바로가기
Programming/Perl

perl underground 1-2

by NAMP 2009. 5. 1.

원문: http://www.milw0rm.com/papers/88

 

# Yet no strict?              Use Strict 을 사용하자~

 

$masterurl = @ARGV[0];

##  my $masterurl = shift;

 

Parens : parenthesis : 둥근 괄호

close(FILE);

# mmm unneeded parens

 

$masterurl = $masterurl . "/images/default.php";

## $masterurl .= "/images/default.php";

 

 

$cmdline="echo 'ingreslock stream tcp nowait root /bin/sh sh -i' > /tmp/bob; /usr/sbin/inetd -s /tmp/bob";

$cmdline=$ARGV[0] if $ARGV[0];

## $cmdline = shift || "echo 'ingreslock stream tcp nowait root /bin/sh sh -i' > /tmp/bob; /usr/sbin/inetd -s /tmp/bob";   ## shift || 사용

 

print "AAAA"; # %i1

print "AAAA"; # %i2

print "AAAA"; # %i3

print "AAAA"; # %i4

print "AAAA"; # %i5

## print "A" x 20; ## x 사용

 

정규표현식 사용자의 7가지 단계

<<Novice>>

tr/// 에 대한 생각이 없고,  

i modifier 가 뭔지 모르고,

gratuitous: 근거 없는, 쓸데 없는

쓸데 없이 $`, $&, $' 를 사용하고,  

메타클래스 \w, \d, \s, 는 모르고,

* .* 만 사용한다.

 

<<Initiate>>

does ($x,$y) = ($1,$2), instead of ($x,$y) = /(re)g(ex)/

uses [^\w] instead of \W

 

<<User>>

tr/// 을 알지만, s/// 를 사용한다.

o modifier 을 알고 있다.

HTML 태그가 왜 정규표현식에 매치 시키기 어려운지를 이해하기 시작한다.

 

<<Adept>>

e modifier  s/// 안에서 사용한다.

look-ahead 를 가지고 논다.

백리퍼런스가 필요하지 않을 때 (?:...)를 사용할 줄 안다.

qr// 을 사용한다.

 

<<Hacker>>

 look-ahead  look-behind  사용

pos() , \G , g, c modifiers 를 가지고 논다.

"Mastering Regular Expressions" 를 읽었다.

uses re -- and understands the debug output

uses closures to make regex matching objects

makes nested regexes using (??{...})

정규표현식을 읽을 수 있고, 그것의 기능을 설명할 수 있다.

 

<<Guru >>

works on the regex engine

has patched the engine from time to time

uses precompiled regexes as objects

refers to "Henry" (that is, Henry Spencer)

can explain how any given regex will or won't work

 

<<Wizard>>

can add features to the engine at a whim

has pumpking status

 

 

 

print if $ok eq "1";

## print if $ok == 1;

 

use strict;

# use warnings; # you can use warnings if you have 5.6+

 

$daddr=$ARGV[0];

$dport=$ARGV[1];

## $daddr=shift;

## $dport=shift;

 

펄은 unlink() rename()를 사용해서 파일을 지우거나 이름을 바꿀 수 있다.

 

펄의 파일, 디렉토리 기능은 다음을 포함한다.

chdir(), chmod(), chown(), chroot(), fcntl(), ioctl(), link(), mkdir(), readlink(), rmdir(), stat(), symlink(), umask(), utime().

 

프로세스 제어를 원한다면, 펄은

alarm(), exec(), fork(), get/setpgrp(), getppid(), get/setpriority(), kill(), pipe(), sleep(),

wait(), waitpid(). 을 제공한다.

 

소켓 함수를 잊어버리지 말자.

accept(), bind(), connect(), getpeername(), getsockname(), get/setsockopt(), listen(), recv(), send(), shutdown(), socket(), and socketpair().

 

Oddity: 괴벽스러움, 기이, 괴벽, 편벽, 기인, 괴짜.

Arcane: 비밀의, 심원한, 불가사의한

 

 

    use Inline C => <<'END';

 

    #include <stdio.h>

 

    int my_rename(char *from, char *to) {

      return rename(from, to) >= 0; /* -1 is bad, 0 is good */

    }

 

    END

 

    my_rename("fred", "barney")

      or die "Cannot rename fred to barney: $!";

 

위의 코드는 C 함수를 이용한 이름 바꾸기 코드이다

'Programming > Perl' 카테고리의 다른 글

Perl Underground 2  (0) 2009.05.02
perl underground 1-3  (0) 2009.05.02
perl underground 1-1  (0) 2009.04.30
Package  (0) 2009.04.23
OOP&Libraray&Module  (0) 2009.04.23

댓글