Может ли Perl заменить несколько ключевых слов своим собственным заменяющим словом за один раз?

Рассмотрим текстовый файл с содержимым:

apple apple pear plum apple cherry pear apple  
cherry plum plum pear apple cherry pear pear apple plum

И рассмотрим однострочник perl:

perl -pe "s/apple/green/g and s/pear/yellow/g and s/plum/blue/g and s/cherry/red/g" < fruits.txt

Он заменяет каждый фрукт его цветом.
Теперь, можно ли это как-то сделать в одном s /// g вместо четырех вышеупомянутых?

Меня также беспокоит порядок слов фруктов.
Если в моем образце нет слова «яблоко», никакие другие замены не будут выполнены. Как мне это исправить?

Обратите внимание: я хочу сохранить решение как однострочное.
Так что определение хэшей, чтение файлов и другие решения, требующие большого количества строк кода Perl, не продвигают меня вперед.

Это скорее вопрос любопытства, чем вопрос жизни и смерти, от которого будет зависеть проект. Просто беспокоит меня в течение нескольких дней и подумал, что более опытный пользователь Perl может помочь с решением в мгновение ока или избавить меня от моих страданий, прямо сказав мне, что это не может быть сделано в Perl так, как я хочу.

8
задан Andrew Clark 19 January 2012 в 21:56
поделиться