Perl Cookbook (실용적인 펄 프로그래밍 레시피 | 2 판)
Description
『Perl Cookbook』 은 문제를 어떻게 처리하는지 보여 주고 왜 그렇게 동작하는지를 설명하는 책으로, 펄을 다룬 책 중에 가장 유용하다는 평가를 받고 있다. 1988년에 출간된 펄 쿡북 1판은 실제 프로그래밍 환경에서 만날 수 있는 문제와 해결책, 유용한 예제를 담았다는 점에서 극찬을 받았다. 이 책은 1판의 장점은 그대로 유지하고, 펄의 새 기능과 새 기술을 확장해 다루는 『Perl Cookbook』 2판으로서, 80여 개의 새로운 레시피가 추가되었으며 100개 이상의 기존 레시피를 업데이트했다.

이 책은 펄의 슬로건인 TMTOWTDI(어떤 일을 하는 데는 하나 이상의 길이 있다)의 정신에 입각하여, 거의 대부분의 레시피에서 동일한 문제나 밀접하게 관련된 문제들을 다른 여러 방법으로 해결해 준다. 짧고 간결하게 정리된 해결책부터, 깊게 파고든 미니 튜토리얼 형식을 갖춘 해결책까지 다양하다. 펄 초심자라면 기본적인 자료형이나 연산자에 대해 설명하는 레시피로 기초를 마스터할 수 있으며, 베테랑 프로그래머라면 직면한 문제를 다루는 레시피를 통해 해결에 도움이 되는 힌트를 얻을 수 있다.
저자

톰 크리스티안센

저자 톰 크리스티안센 (Tom Christiansen)은 래리 월이 1987년에 처음으로 펄을 발표한 뒤로 계속해서 펄 개발과 강좌를 해오고 있다. 위스콘신 주립대학 매디슨 캠퍼스에서 스페인어와 컴퓨터과학 학사 학위를 받았으며, 컴퓨터과학 분야에서 OS 설계 및 컴퓨터 언어학으로 석사 학위를 받았다. 『Programming Perl』의 공동 저자이기도 하다.

목차

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 여러

출판사 서평

* 이 책에서 다루는 내용
- 데이터 조작
- 파일 입출력
- 정규표현식
- 모듈
- 레퍼런스
- 객체
- 데이터 구조
- 시그널
- 데이터베이스
- 그래픽 애플리케이션
- 대화형 인터페이스
- 보안
- 인터넷 프로그래밍
- CGI
- LWP