量指定子の + と * は、欲張り (greedy) なので、できるだけ多くの範囲にマッチしようとします。
my $line = 'This is a bookable book.';
$line =~ s/(This.+book)/[$1]/;
print $line, "\n";
[This is a bookable book].
+ と * の代わりに、+? と *? を使うようにすると、できるだけ短い範囲でマッチしてくれます。
my $line = 'This is a bookable book.';
$line =~ s/(This.+?book)/[$1]/;
print $line, "\n";
[This is a book]able book.