Comment puis-je imprimer les lignes qui correspondent à un modèle en Perl?

En supposant file.txt a juste une phrase par ligne comme suit:

John Depp est un mec génial. 
Il est très intelligent. 
Il peut faire quelque chose. 
Venez rencontrer Jean-Depp.

Le code Perl est comme suit:-

open ( FILE, "file.txt" ) || die "can't open file!";
@lines = <FILE>;
close (FILE);
$string = "John Depp";
foreach $line (@lines) {
    if ($line =~ $string) { print "$line"; }
}

La sortie va être la première et la quatrième ligne.

Je veux faire ce travail pour le fichier aléatoire de sauts de ligne plutôt que d'une phrase anglaise par ligne. Je veux dire, il devrait également fonctionner pour les éléments suivants:-

John Depp est un mec génial. Il est très intelligent. Il peut faire quelque chose. Venez rencontrer Jean-Depp.

La sortie doit être en premier et quatrième phrases.

Des idées s'il vous plaît?

Un problème potentiel qui j'ai récemment appris que j'avais été faire du mal moi-même: quand vous faites un dé déclaration, il doit être "ou mourir" et non "|| die", parce qu'ils ont différents priorité. Il travaillera dans ce cas, car il n'y a qu'une seule déclaration et qu'il ne peut pas être regroupés avec d'autre chose. Mais vous devriez utiliser "or die" partout de toute façon.
Dans ce cas, l'OP est bien parce que les parenthèses utilisées dans le open appel. Un problème plus grave est complètement inutile d'aspirer du fichier. Aussi, le die message doit inclure le nom du fichier et le message d'erreur $!. En outre, à l'aide de descripteurs lexicaux et les trois-argument forme de open rendrait le code en ligne avec ce qui est considéré comme la meilleure pratique.
Vous avez raison, bien sûr. Je n'ai pas vraiment regarder la plupart du code, j'ai juste jeté un coup d'oeil à elle et j'ai pensé jeter dedans.
double possible de stackoverflow.com/questions/1809469/...

OriginalL'auteur kivien | 2010-04-01