1장 문자열
1.0 개요
1.1 부분문자열 접근하기
1.2 기본값 설정하기
1.3 임시 변수를 사용하지 않고 값을 맞바꾸기
1.4 문자를 값으로, 값을 문자로 변환하기
1.5 명칭이 있는 유니코드 문자 사용하기
1.6 한 번에 한 글자씩 문자열 처리하기
1.7 문자열의 단어 또는 글자의 순서를 뒤집기
1.8 유니코드 결합 문자를 단일 문자로 취급하기
1.9 유니코드 결합 문자가 들어간 문자열을 정규화하기
1.10 유니코드 문자열을 옥텟들의 시퀀스로 다루기
1.11 탭을 스페이스로, 스페이스를 탭으로 변환하기
1.12 사용자가 입력한 내용에 들어 있는 변수 이름을 값으로 치환하기
1.13 대소문자 변환하기
1.14 제목이나 헤드라인에 적절하게 대소문자 쓰기
1.15 문자열 안에서 함수와 표현식 보간하기
1.16 히어 도큐먼트 들여쓰기
1.17 단락의 서식을 재조정하기
1.18 문자 이스케이프
1.19 문자열 끝에 있는 공백 잘라내기
1.20 쉼표로 구분된 데이터 해석하기
1.21 상수 변수
1.22 사운덱스(soundex) 일치 검사
1.23 프로그램: fixstyle
1.24 프로그램: psgrep
2장 수
2.0 개요
2.1 문자열이 올바른 숫자인지 검사하기
2.2 부동소수점 수의 반올림
2.3 부동소수점 수 비교하기
2.4 연속된 정수 수열에 대해 연산하기
2.5 로마 숫자 다루기
2.6 난수 생성하기
2.7 재현 가능한 난수열 만들기
2.8 더욱 예측하기 힘든 난수 만들기
2.9 값이 편향된 난수 만들기
2.10 라디안 대신 도를 사용한 삼각함수
2.11 여러 가지 삼각함수 사용하기
2.12 로그 값 구하기
2.13 행렬의 곱셈
2.14 복소수 사용하기
2.15 이진수, 팔진수, 십육진수 변환하기
2.16 숫자에 쉼표 삽입하기
2.17 복수형을 올바르게 출력하기
2.18 프로그램: 소인수 분해하기
3장 날짜와 시간
3.0 개요
3.1 오늘 날짜 계산하기
3.2 연월일시분초를 에포크 시간으로 변환하기
3.3 에포크 시간을 연월일시분초로 변환하기
3.4 날짜를 더하거나 빼기
3.5 두 날짜의 간격 알아내기
3.6 주/월/연 내의 일 차, 연 내의 주 차
3.7 문자열에서 날짜와 시각 추출하기
3.8 날짜 출력하기
3.9 고해상도 타이머
3.10 짧은 슬립(sleep)
3.11 프로그램: hopdelta
4장 배열
4.0 개요
4.1 프로그램 안에서 리스트 명세하기
4.2 리스트를 출력할 때 원소 사이에 쉼표 넣기
4.3 배열의 크기 바꾸기
4.4 희소 배열 구현하기
4.5 배열 순회하기
4.6 레퍼런스를 사용하여 배열 순회하기
4.7 리스트에서 중복된 원소를 제거하기
4.8 한 배열에는 있고 다른 배열에는 없는 원소 찾아내기
4.9 두 리스트 간의 합집합, 교집합, 차집합 구하기
4.10 한 배열을 다른 배열 뒤에 붙이기
4.11 배열 뒤집기
4.12 배열의 원소 여러 개를 처리하기
4.13 리스트에서 조건을 만족하는 첫 번째 원소 찾기
4.14 리스트에서 조건을 만족하는 모든 원소 찾기
4.15 배열을 숫자 기준으로 정렬하기
4.16 계산 결과를 기준으로 리스트를 정렬하기
4.17 원형 리스트 구현하기
4.18 배열의 내용 뒤섞기
4.19 프로그램: words
4.20 프로그램: permute
5장 해시
5.0 개요
5.1 해시에 원소 추가하기
5.2 해시에 어떤 키가 존재하는지 검사하기
5.3 키나 값을 수정할 수 없는 해시 만들기
5.4 해시에서 항목을 삭제하기
5.5 해시 순회하기
5.6 해시의 내용 출력하기
5.7 해시에 삽입한 순서대로 꺼내기
5.8 키 하나에 값이 여러 개 연관된 해시 만들기
5.9 해시 뒤집기
5.10 해시 정렬하기
5.11 해시 합치기
5.12 두 개의 해시에서 공통된 키 또는 한쪽에만 있는 키 찾기
5.13 레퍼런스를 해시의 키로 사용하기
5.14 해시의 크기를 미리 지정하기
5.15 가장 빈번한 원소 찾아내기
5.16 데이터들 간의 관계를 표현하기
5.17 프로그램: dutree
6장 패턴 일치
6.0 개요
6.1 복사와 치환을 동시에 하기
6.2 글자들에 일치하기
6.3 단어에 일치하기
6.4 정규 표현식에 주석 달기
6.5 N번째로 일치하는 부분 찾기
6.6 여러 줄로 이루어진 문자열에서 일치 검사하기
6.7 구분자를 써서 레코드 읽기
6.8 어떤 범위 안의 줄들을 추출하기
6.9 셸 글로브를 정규식처럼 일치시키기
6.10 패턴을 변수 안에 넣어 사용할 때 속도 높이기
6.11 올바른 패턴인지 검사하기
6.12 정규 표현식에 로케일 설정을 반영하기
6.13 근사적으로 일치하기
6.14 마지막 검사했던 위치부터 일치 검사하기
6.15 탐욕적인 일치, 비탐욕적인 일치
6.16 두 번 들어간 단어 찾아내기
6.17 중첩된 패턴 일치 검사
6.18 AND, OR, NOT을 한 패턴 안에서 표현하기
6.19 올바른 이메일 주소에 일치하기
6.20 축약어에 일치하기
6.21 프로그램: urlify
6.22 프로그램: tcgrep
6.23 유용한 정규 표현식 예문
7장 파일 접근
7.0 개요
7.1 파일 열기
7.2 특수한 이름의 파일 열기
7.3 파일이름 안의 물결표 치환하기
7.4 에러 메시지에 파일이름 넣기
7.5 파일핸들을 변수에 넣기
7.6 내장 함수처럼 파일핸들을 인자로 받는 함수 만들기
7.7 열어 놓은 출력용 파일핸들을 캐시하기
7.8 여러 파일핸들에 동시에 출력하기
7.9 파일 기술자 번호로 여닫기
7.10 파일핸들 복사하기
7.11 임시 파일 만들기
7.12 프로그램 안에 파일을 넣기
7.13 여러 파일을 DATA 영역에 넣기
7.14 유닉스 스타일의 필터 프로그램 만들기
7.15 임시 파일을 사용하여 파일을 즉석에서 수정하기
7.16 -i 옵션을 사용하여 파일을 즉석에서 수정하기
7.17 임시 파일을 사용하지 않고 파일을 즉석에서 수정하기
7.18 파일에 락 걸기
7.19 출력 버퍼 비우기
7.20 논블로킹 입출력
7.21 읽지 않고 남아 있는 데이터의 크기 알아내기
7.22 블록되지 않고 다수의 파일핸들에서 읽기
7.23 블록되지 않고 행 전체를 읽기
7.24 프로그램: netlock
7.25 프로그램: lockarea
8장 파일 콘텐츠
8.0 개요
8.1 다음 행과 이어진다는 표식이 있는 행을 읽기
8.2 파일 안의 행(또는 단락, 레코드)의 개수 세기
8.3 파일 안의 모든 단어를 처리하기
8.4 파일의 행이나 단락을 역순으로 읽기
8.5 내용이 계속 추가되는 파일 읽기
8.6 파일에서 무작위로 행을 고르기
8.7 모든 행을 뒤섞기
8.8 파일의 특정 행 읽기
8.9 가변 길이 텍스트 필드 처리
8.10 파일의 마지막 행 삭제하기
8.11 이진 파일 처리하기
8.12 임의 접근(random access) 입출력
8.13 임의 접근 파일 갱신하기
8.14 이진 파일에서 문자열 읽기
8.15 고정 길이 레코드 읽기
8.16 설정 파일 읽기
8.17 파일의 신뢰성 검사하기
8.18 파일을 배열로 다루기
8.19 기본 입출력 레이어 설정하기
8.20 파일핸들을 통해 유니코드를 읽고 쓰기
8.21 마이크로소프트의 텍스트 파일을 유니코드로 변환하기
8.22 두 파일의 내용을 비교하기
8.23 문자열을 파일처럼 다루기
8.24 프로그램: tailwtmp
8.25 프로그램: tctee
8.26 프로그램: laston
8.27 프로그램: 플랫 파일에 색인 만들기
9장 디렉터리
9.0 개요
9.1 타임스탬프를 얻기, 설정하기
9.2 파일을 삭제하기
9.3 파일을 복사/이동하기
9.4 한 파일에 두 개의 이름이 주어졌는지 확인하기
9.5 디렉터리 안의 모든 파일을 처리하기
9.6 패턴에 일치하는 파일이름의 리스트를 얻기
9.7 디렉터리 안의 모든 파일을 재귀적으로 처리하기
9.8 디렉터리와 그 내용을 삭제하기
9.9 파일이름을 바꾸기
9.10 파일이름의 구성요소들을 분리하기
9.11 퍼미션을 다룰 때 팔진수 대신 부호를 사용하기
9.12 프로그램: symirror
9.13 프로그램: lst
10장 서브루틴
10.0 개요
10.1 서브루틴 인자에 접근하기
10.2 함수 안에 프라이빗 변수 만들기
10.3 값이 유지되는 프라이빗 변수를 만들기
10.4 현재 실행 중인 함수 이름 알아내기
10.5 배열이나 해시를 레퍼런스로 함수에 넘기기
10.6 반환 컨텍스트 알아내기
10.7 이름 있는 인자를 넘기기
10.8 반환값들 중 원하는 것만 얻기
10.9 여러 개의 배열 또는 해시를 반환하기
10.10 실패했음을 반환값을 통해 알리기
10.11 함수 프로토타입을 선언하기
10.12 예외를 처리하기
10.13 전역 변수의 값을 임시로 다른 장소에 저장하기
10.14 함수를 재정의하기
10.15 AUTOLOAD를 사용해서 정의되지 않은 함수 호출을 포착하기
10.16 서브루틴을 중첩하기
10.17 스위치 구문 만들기
10.18 프로그램: 메일을 정렬하기
11장 레퍼런스와 레코드
11.0 개요
11.1 배열 레퍼런스를 얻기
11.2 배열의 해시를 만들기
11.3 해시 레퍼런스를 얻기
11.4 함수 레퍼런스를 얻기
11.5 스칼라의 레퍼런스를 얻기
11.6 스칼라 레퍼런스의 배열을 만들기
11.7 객체 대신 클로저 사용하기
11.8 메서드의 레퍼런스를 만들기
11.9 레코드 만들기
11.10 해시 레코드를 텍스트 파일에서 읽어들이기/텍스트 파일에 쓰기
11.11 데이터 구조를 출력하기
11.12 데이터 구조를 복사하기
11.13 데이터 구조를 디스크에 저장하기
11.14 사용자가 저장하지 않아도 보존되는 데이터 구조 만들기
11.15 약한 레퍼런스를 사용하여 순환 데이터 구조 처리하기
11.16 프로그램: 아웃라인
11.17 프로그램: 이진 트리
12장 패키지, 라이브러리, 모듈
12.0 개요
12.1 모듈의 인터페이스를 정의하기
12.2 require 또는 use 사용 시에 발생하는 에러를 가로채기
12.3 use를 실행 시점까지 미루기
12.4 모듈 안에서만 접근할 수 있는 프라이빗 변수 만들기
12.5 모듈 안에서만 접근할 수 있는 프라이빗 함수 만들기
12.6 호출한 쪽의 패키지를 식별하기
12.7 모듈의 뒷정리를 자동화하기
12.8 자기만의 모듈 디렉터리를 구축하기
12.9 모듈을 배포하기
12.10 SelfLoader로 모듈 적재를 빠르게 하기
12.11 AutoLoader로 모듈 적재를 빠르게 하기
12.12 내장 함수를 오버라이드하기
12.13 모든 패키지에서 내장 함수를 오버라이드하기
12.14 내장 함수처럼 에러와 경고를 출력하기
12.15 경고를 커스터마이즈하기
12.16 패키지를 간접적으로 참조하기
12.17 h2ph로 C의 #include 파일을 변환하기
12.18 h2xs로 C 코드를 포함한 모듈을 만들기
12.19 Inline::C로 C 확장 모듈을 만들기
12.20 POD로 모듈 문서 만들기
12.21 CPAN 모듈의 빌드와 설치
12.22 예제: 모듈 템플릿
12.23 프로그램: 설치된 모듈의 버전과 설명을 검색하기
13장 클래스, 객체, tie
13.0 개요
13.1 객체를 만들기
13.2 객체를 파괴하기
13.3 인스턴스 데이터 관리하기
13.4 클래스 데이터 관리하기
13.5 클래스를 구조체로 사용하기
13.6 복제본을 만드는 생성자
13.7 복사 생성자
13.8 메서드를 간접적으로 호출하기
13.9 하위 클래스의 인스턴스인지 판정하기
13.10 상속 가능한 클래스 만들기
13.11 오버라이드된 메서드에 접근하기
13.12 AUTOLOAD로 속성 메서드를 만들기
13.13 객체에서 원형 데이터 구조 처리하기
13.14 연산자 오버로드
13.15 tie로 매직 변수를 만들기
14장 데이터베이스 접근
14.0 개요
14.1 DBM 파일을 만들고 사용하기
14.2 DBM 파일을 비우기
14.3 DBM 파일 간 변환하기
14.4 DBM 파일 병합하기
14.5 큰 DBM 파일을 정렬하기
14.6 DBM 파일에 복잡한 형식의 데이터를 저장하기
14.7 영속적인 데이터
14.8 질의 결과를 Excel 또는 CSV로 저장하기
14.9 DBI를 사용해서 SQL 명령을 실행하기
14.10 인용부 처리
14.11 데이터베이스 에러를 처리하기
14.12 효율적으로 질의를 반복하기
14.13 SQL 질의문을 프로그램 실행 시점에 동적으로 만들기
14.14 질의결과로 반환되는 행의 수를 확인하기
14.15 트랜잭션을 사용하기
14.16 한 페이지씩 데이터를 표시하기
14.17 CSV 파일을 SQL로 질의하기
14.18 데이터베이스 서버 없이 SQL을 사용하기
14.19 프로그램: ggh (넷스케이프 히스토리를 grep하기)
15장 대화형 프로그래밍
15.0 개요
15.1 프로그램 인자를 해석하기
15.2 프로그램이 대화식으로 실행되는지 검사하기
15.3 화면 지우기
15.4 터미널 또는 창의 크기를 알아내기
15.5 텍스트의 색을 바꾸기
15.6 키보드에서 한 문자를 읽어 들이기
15.7 터미널에서 벨소리 내기
15.8 POSIX termios 사용하기
15.9 대기 중인 입력을 검사하기
15.10 비밀번호 입력 받기
15.11 입력을 편집하기
15.12 화면을 제어하기
15.13 Expect로 다른 프로그램을 제어하기
15.14 Tk로 메뉴를 만들기
15.15 Tk로 대화상자를 만들기
15.16 Tk에서 창 크기 변경 이벤트 처리하기
15.17 윈도우용 Perl/Tk로 DOS 셸 창 없애기
15.18 데이터로 그래프 만들기
15.19 이미지의 섬네일을 만들기
15.20 이미지에 텍스트를 추가하기
15.21 프로그램: 간단한 termcap 프로그램
15.22 프로그램: tkshufflepod
15.23 프로그램: graphbox
16장 프로세스 관리와 프로세스 간 통신
16.0 개요
16.1 다른 프로그램의 출력을 수집하기
16.2 다른 프로그램을 실행하기
16.3 현재 프로그램을 다른 프로그램으로 교체하기
16.4 다른 프로그램을 읽거나 쓰기
16.5 출력을 필터 처리하기
16.6 입력을 전처리하기
16.7 프로그램의 STDERR을 읽기
16.8 다른 프로그램의 입력과 출력을 제어하기
16.9 다른 프로그램의 입력, 출력, 에러를 제어하기
16.10 관련된 프로세스끼리 통신하기
16.11 이름 있는 파이프를 사용하여 프로세스를 파일처럼 보이게 하기
16.12 다른 프로세스와 변수 공유하기
16.13 사용할 수 있는 시그널 목록 얻기
16.14 시그널 보내기
16.15 시그널 핸들러 설정하기
16.16 시그널 핸들러를 일시적으로 오버라이드하기
16.17 시그널 핸들러 만들기
16.18 Ctrl-C 가로채기
16.19 좀비 프로세스가 생기지 않게 하기
16.20 시그널을 블록하기
16.21 동작을 타임아웃시키기
16.22 시그널을 치명적 에러로 바꾸기
16.23 프로그램: sigrand
17장 소켓
17.0 개요
17.1 TCP 클라이언트 만들기
17.2 TCP 서버 만들기
17.3 TCP를 통해서 통신하기
17.4 UDP 클라이언트 만들기
17.5 UDP 서버 만들기
17.6 유닉스 도메인 소켓 사용하기
17.7 소켓으로 연결된 상대편 식별하기
17.8 자신의 이름과 주소 알아내기
17.9 프로세스 복제 후 소켓 닫기
17.10 양방향 클라이언트 만들기
17.11 포크(fork)하는 서버
17.12 미리 포크하는 서버
17.13 포크하지 않는 서버
17.14 스레드를 사용하는 멀티태스킹 서버 만들기
17.15 POE로 멀티태스킹 서버 만들기
17.16 멀티홈 서버 만들기
17.17 데몬 서버 만들기
17.18 요청에 따라 서버 재시작하기
17.19 복수의 입력 스트림 관리하기
17.20 프로그램: backsniff
17.21 프로그램: fwdport
18장 인터넷 서비스
18.0 개요
18.1 DNS 간단히 검색하기
18.2 FTP 클라이언트 만들기
18.3 메일 보내기
18.4 유즈넷 뉴스 메시지 읽거나 쓰기
18.5 POP3로 메일 읽기
18.6 telnet을 시뮬레이션하기
18.7 원격 컴퓨터에 핑(ping) 보내기
18.8 LDAP 서버에 접근하기
18.9 파일을 첨부하여 메일 보내기
18.10 메일에서 첨부 파일 뽑아내기
18.11 XML-RPC 서버 만들기
18.12 XML-RPC 클라이언트 만들기
18.13 SOAP 서버 만들기
18.14 SOAP 클라이언트 만들기
18.15 프로그램: rfrm
18.16 프로그램: expn과 vrfy
19장 CGI 프로그래밍
19.0 개요
19.1 CGI 스크립트 만들기
19.2 에러 메시지 리다이렉트하기
19.3 500 Server Error 해결하기
19.4 안전한 CGI 프로그램 만들기
19.5 셸 이스케이프 없이 외부 명령 실행하기
19.6 HTML 도우미 함수를 사용하여 리스트와 테이블 만들기
19.7 다른 곳으로 리다이렉트하기
19.8 가공되지 않은 HTTP 데이터를 디버깅하기
19.9 쿠키 관리하기
19.10 폼 데이터 유지하기
19.11 하나의 CGI 스크립트로 여러 화면 만들기
19.12 파일 또는 메일로 폼 저장하기
19.13 프로그램: chemiserie
20장 웹 자동화
20.0 개요
20.1 URL의 내용 가져오기
20.2 폼 제출 자동화하기
20.3 URL 추출하기
20.4 아스키를 HTML로 변환하기
20.5 HTML을 아스키로 변환하기
20.6 HTML 태그를 추출하거나 삭제하기
20.7 깨진 링크 찾기
20.8 내용이 변경된 링크 찾기
20.9 템플릿을 사용해서 HTML 만들기
20.10 웹 페이지 미러링 하기
20.11 로봇 만들기
20.12 웹 서버 로그 파일 해석하기
20.13 서버 로그 처리하기
20.14 쿠키 사용하기
20.15 비밀번호로 보호된 페이지 받아오기
20.16 https:// 웹 페이지 가져오기
20.17 HTTP GET을 이어받기
20.18 HTML 해석하기
20.19 테이블 데이터 추출하기
20.20 프로그램: htmlsub
20.21 프로그램: hrefsub
21장 mod_perl
21.0 개요
21.1 인증
21.2 쿠키 설정하기
21.3 쿠키 값 접근하기
21.4 브라우저에 리다이렉트 지시하기
21.5 헤더 확인하기
21.6 폼 매개변수 접근하기
21.7 업로드된 파일을 받기
21.8 데이터베이스 접근 속도 향상시키기
21.9 아파치 로그 기능 커스터마이즈
21.10 URL에 정보를 투명하게 넣기
21.11 mod_perl과 PHP 간의 통신
21.12 CGI에서 mod_perl로 옮기기
21.13 핸들러 간에 정보 공유하기
21.14 변경된 모듈을 새로 읽어들이기
21.15 mod_perl 응용프로그램 벤치마크 측정하기
21.16 HTML::Mason으로 템플릿 만들기
21.17 Template Toolkit으로 템플릿 만들기
22장 XML
22.0 개요
22.1 XML을 해석하여 데이터 구조로 변환하기
22.2 XML을 DOM 트리로 변환하기
22.3 XML을 SAX 이벤트로 변환하기
22.4 요소 또는 텍스트를 간단히 수정하기
22.5 XML을 검증하기
22.6 XML 문서 안의 요소와 텍스트 검출하기
22.7 XML 스타일시트 변환 처리하기
22.8 사용할 수 있는 메모리보다 더 큰 크기의 파일 처리하기
22.9 RSS 파일을 읽고 쓰기
22.10 XML 만들기