行のリストを配列にロードする
6757 ワード
このブログ記事は、私の同僚が、定義されたトークンで動的な文字列を繰り返して、いくつかを加えることについてしばしば尋ねる一般的な仕事について説明します
私はPerlを使うのが好きです
を、私は少し秘密を認める必要があります:
欲しいなら
あなたが一連の
このループの中で行うことができますクールスの量は、ログの解析から、コードやデータのミュージングを生成するには、Perlの親切のおかげで無限です.
参考文献 Read a file into an array using Perl Stupid DATA Tricks
ノート
私は私の記憶がひどいので、私はいつもの正確な構文を探して疲れていたこれを書いた
or
, and
, =
間にプラスプラススマート仕上げ.私はPerlを使うのが好きです
__DATA__
これのための私のスクリプトの終わりにトークン.The __DATA__
トークンの強さは« "embed” a file inside a Perl program then read it from the DATA filehandle » . それはあなたの創造とオープンファイルを保存し、非常に迅速なプロトタイプとテストに便利です.#!/usr/bin/env perl
use strict;
use warnings;
# Your script here
# Everything under is considered as
# the end of the code
__DATA__
a
lot
lot
of
stuff
here
...
一般的な慣習は、ファイルハンドルとして扱うことによって、それらのデータを配列にロードすることです.my @lines = <DATA>;
しかし、値はあなたが明らかにしたくないキャリッジリターンを含みます.この二つの解決法を使いました.my @lines;
push @lines,
split while <DATA>;
これは非常に読みやすく、自己説明(Perlは自然言語を覚えています、それは言語学者によって作成されました).私がポストを改善することができたように、何かが不明であるならば、コメントしてください.を、私は少し秘密を認める必要があります:
push my @lines,
split while <DATA>;
... 事前宣言なしで@lines
も同じです.私はそれをチェックしなければならなかったが、Perlで頻繁に、自然に何か愚かなことを考えるとき、それは実際に自然に動作します(私はそれが時々奇跡のように見えることを認めなければならない).欲しいなら
uniq
値(確かに)、1つの方法は、コアモジュールを使用することですList ::Util
:use List::Util qw(uniq);
push my @lines,
uniq split while <DATA>;
Another way to do it 常に可能です.chomp( my @lines = uniq <DATA> );
私は実際にこのリストコンテキストの解決策を好みます.それはショートネスです.あなたが一連の
or
あなたの同僚や顧客のため.私たちは実際、ここで超高度な言語生成を行っています.#!/usr/bin/env perl
use strict;
use warnings;
use List::Util qw(uniq);
chomp( my @lines = uniq <DATA> );
for ( @lines ) {
# $_ is the current loop element
print generate_string( $_ );
# $lines[-1] is the last array element
if ( not $_ eq $lines[-1] ) {
print ' or ';
} else {
print "\n";
}
}
sub generate_string {
return 'line == "' . shift . '"';
}
__DATA__
a
lot
lot
of
stuff
here
...
$ perl lines.pl
line == "a' or line == "lot' or line == "of' or line == "stuff' or line == "here' or line == "...'
他の多くのソリューションが存在するPerl one-liners そのような実践についてもっと学ぶことができること.このループの中で行うことができますクールスの量は、ログの解析から、コードやデータのミュージングを生成するには、Perlの親切のおかげで無限です.
参考文献
ノート
私は私の記憶がひどいので、私はいつもの正確な構文を探して疲れていたこれを書いた
__data__
配列へのトークン.私が検索エンジンでそれをタイプするとき、私を含むあらゆる種類の人々を助けることを望みます.Reference
この問題について(行のリストを配列にロードする), 我々は、より多くの情報をここで見つけました https://dev.to/smonff/load-a-list-of-lines-into-an-array-for-processing-them-in-perl-412aテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol