in reply to Extracting a chapter from text file

G'day jwkuo87,

Welcome to the monastery.

The following technique uses paragraph instead of slurp mode (see $/ in perlvar: Variables related to filehandles). This gets around matching Chapter 2 in the TOC.

I've also used the '..' range operator (which davido showed earlier).

Finally, we stop reading the input file as soon as Chapter 3 is found.

Here's the code. Note that, for testing purposes, I've added a second (dummy) paragraph to Chapter 2 and truncated the existing first paragraph.

#!/usr/bin/env perl use strict; use warnings; { local $/ = ''; while (<DATA>) { next unless /^Chapter 2/ .. /^Chapter 3/; last if /^Chapter 3/; print; } } __DATA__ Table of Contents Chapter 1. Introduction Chapter 2. Main Chapter 3. Conclusion ============================== Chapter 1. Introduction This is the introduction preceding Chapter 2. Chapter 2. Main This is the text contained in Chapter 2 and will ... Assume more than one paragraph. Chapter 3. Conclusion This is the conclusion.

Output:

Chapter 2. Main This is the text contained in Chapter 2 and will ... Assume more than one paragraph.

-- Ken