個人財務 10個の短くて便利なPerlプログラムに調整する - ダミー

10個の短くて便利なPerlプログラムに調整する - ダミー

目次:

Anonim

短いプログラムはあまり良くないと思う人もいますが、それはPerlではそうではありません。ちょうど2行のPerlコードが長い道を行くことができます。この記事では、ほんのちょっとした小さなPerlプログラムを紹介します。

一意の行の収集

テキストファイルに重複している行が多数あり、一意の行のみを表示したい場合は、次のプログラムを使用してそれらを配列に集めることができます(この例では、@Uniqueと呼ばれます)。 :

<! - 1 - >

open(IN、 "somefile。txt"); @ユニーク=(); ($ i {$ _} ++){push(@Unique、$ _)}}

ここでのトリックは$ i {$ _} ++が最初に0を返すということです$ _をキーとし、その後ろにゼロ以外の値を持つキーと値のペアを作成します。

複数の空白行を削除する

テキストファイルの中には、複数の空白行が連続しているものがあります。次のプログラムは、2つ以上の空白行のすべてのインスタンスを単一の空白行に圧縮してテキストファイルを出力します。

<!注:

空白行にスペースやタブなどの空白文字を入れることはできますが、表示可能な文字は使用できません。

open(IN、 "somefile。txt"); $ PrevBlank = 0; while(){ if(/ S / or!$ PrevBlank){print $ _}

$ PrevBlank = / ^ s * $ /;

}

前の例のif文は、行に空白以外の文字がある場合、または前の行が空白でない場合はtrueです。 $ PrevBlankの代入は、現在の行が空白であるかどうかを示します。つまり、空白文字が0個以上あり、それ以外の文字はありません。

- >

ソートされた順番でファイルから行を印刷する

Perlのソート機能がどれほど有用であるかを忘れるのは簡単です。次のプログラムはファイル全体を配列に読み込み、配列をソートして結果を出力します。短くて甘く、起動にはかなり効率的です:

open(IN、 "somefile.txt");

print sort();

ファイルから行の範囲を印刷する

ファイルから数行だけを読みたいと思ったことはありますか?次のプログラムは、一連の行だけを出力します。あなたは2つの引数を指定してプログラムを実行します:必要な範囲とファイル名。たとえば、プログラムの名前を "showline"とし、somefileの10行目から20行目を見たい場合などです。 txtファイルでは、次のコマンドラインを使用します。

showline 10-20 somefile。 txt

次のプログラムは、一連の行を出力します。

open(IN、$ ARGV [1])またはdie "$ Fileを読み込めませんでした。 n "である。

($開始、$停止)=分割(/ - 、$ ARGV [0]);

for($ i = 1; $ i <= $ stop; $ i + = 1)

($ Line =; if($ i> = $ Start){print $ Line}}

ディレクトリ内のファイルのみを一覧表示する

ディレクトリ内のサブディレクトリを無視してファイルに集中したいことがあります。

foreach $ f(){if(-f $ f){print "$ fn"}}

ディレクトリをサイズ別に表示するには、次の-fファイルテストを使用します。

ファイル名以外のディレクトリリストをソートするには、プログラムは名前とその他の項目からなるレコードのリストをリスト内に保持しなければなりません。ハッシュは、キー(ファイル名)と値(他のディレクトリ情報)を持つレコードを持つこの種類のリストに使用するのに最適です。次のプログラムは、ディレクトリ内の各ファイルのサイズをリストしたハッシュを作成し、出力するアイテムをソートします。 (このプログラムを簡単に変更して、サイズではなく日付で並べ替えることができます。)

foreach $ f(){$ i {$ f} = -s $ f};

foreach $ k(sort {$ i {$ b} <=> $ i {$ a}}キー%i)

{printf "%8d%sn"、$ i {$ k}、$ k }

拡張子でディレクトリを並べ替える

ファイル名の一部で並べ替えるのは、ファイルサイズまたはファイルが変更された日付で並べ替えるよりもやや難しい処理です。次のプログラムは、ファイル名を2つに分割し、2つ目の部分でソートします。 UNIXまたはMacintoshシステムでPerlを実行している場合、このプログラムは、ファイル名にピリオドまたは1つのピリオドがない場合にのみ、予測可能です:

foreach $ FullName(){

($ Name、$ Ext)= split( /。/、$ FullName、2);

push(@Temp、 "$ Extt $ FullName");

}

foreach $ Val(sort(@Temp)){

($ Ext、$ FullName)= split(/ t /、$ Val);

print "$ FullNamen";

}

シンプルな計算機を作成する

シンプルで使いやすい計算機が必要でした。次のプログラムは、Perlのeval関数を使用して、入力した数式の答えを出力します。プログラムを終了するには、空白行を入力します。

while(){

$ i = $ _;あなたの計算機を作成するためのプログラムです。 chomp($ i);ただし、($ i){last}

$ o = eval($ i); "Answer = $ on"を印刷します。

}

プログラムを実行すると、

((2 ** 8)+(3 ** 8))

と入力すると、

> Answer = 6817

リストのランダム化

Perlでは、乱数を生成するのは簡単ですが、配列の順序をランダム化するのは簡単ではありません。それにもかかわらず、splice関数を使用して配列からランダムな要素を取り出し、その要素を別の配列に配置することができます。次のプログラムは、リスト@MyListをランダム化します。

my @TempList =(); while(@MyList)、(@MyList)

while(@MyList)

@MyList = @TempList;

ここでのトリックは、rand(@MyList)が0と@MyListの要素数の間の数値を選択し、スプライスがこの乱数を整数に変更することです。

ランダムニーモニックパスワードの生成

コンピュータユーザーに推測が容易ではないパスワードを思い出させることは、システム管理者にとって最も困難な仕事の1つです。人々は常に、誕生日やペットの名前をパスワードに使用することを主張しているように見えます。セキュリティを侵害すると、子供の遊びになります。

以下のプログラムはランダムなパスワードを生成します。しかし、覚えづらい文字の混乱の代わりに、パスワードは、発音可能な子音と母音のペアで表示されるため、多少ニーモニックです。いくつかの奇妙な音節を組み合わせることで、覚えやすいナンセンスフレーズを生成することができます。

パスワードの各音節は100個の数字のいずれかを表すことができる。したがって、

votahubo

のような単一の4音節のパスワードは、プログラムが生成する1億(100から4番目の)の可能なパスワードの1つです。システム管理者がこれらのパスワードを割り当てると、ユーザーは簡単に推測できるパスワードを選択するよりもセキュリティが強化されます。

print "シード番号を入力してください。 $ s =;

srand($ s ^時間); @c = split(/ * /、 "bcdfghjklmnprstvwxyz"); @v = split(/ * /、 "aeiou"); $ v [int(rand(5))]; $ 9 [$ 9、$ 8、 }

このプログラムの最初の2行は乱数のシードを初期化し、次の2行は20個の子音(マイナス q

)と5個のアルファベットの母音を含むリストを作成します。 forループは単純に4つの音節を出力します。

10個の短くて便利なPerlプログラムに調整する - ダミー

エディタの選択

ASVABの準備:小数の使用

ASVABの準備:小数の使用

ASBABの小数を扱う方法を知る必要があります。小数は、分子と分母を使用せずに分数を書き込む方法です。小数点以下7分の10を10進数として書くことができます。あなたはそれを "7分の1"または "ゼロ点7"と発音します。小数点以下の桁数は小数点以下の桁数を示します。

ASVABサブテストの詳細 - ダミー

ASVABサブテストの詳細 - ダミー

テストの目的と目的によって、いくつかのバージョンのASVAB。 ASVAB(CAT-ASVAB)のコンピュータ化されたバージョンは、9つの別々の時間調整されたサブテストを含む。 CAT-ASVABでは、自動情報とショップ情報が2つの異なるテストに分かれていますが、それらはペーパーバージョンで組み合わせられています。 ...

ASVAB読書と朗読のヒント - ダミー

ASVAB読書と朗読のヒント - ダミー

あなたの能力を向上させるためのショートカットはありませんASVABの読解スキル(練習以外に)は、このパートでできるだけ高いスコアを取るために、テスト日にいくつかのことを行うことができます。あなたがこの小テストで時間を使い果たしている場合や、あなたが本物を特定できるかどうかがわからない場合...

エディタの選択

Excelマクロヘルプのための10の場所 - ダミー

Excelマクロヘルプのための10の場所 - ダミー

誰も1つのExcelマクロエキスパートになることはできません日。 VBAは時間と実践の旅です。良いニュースは、そこにあなたの道であなたを助けることができる豊富な資源があるということです。

5本当にクールなExcel関数 - ダミー

5本当にクールなExcel関数 - ダミー

この便利な関数をExcelの機能に追加すると、あなたはExcelマスターのそれ以上のものになるでしょう。簡単に乱数を生成するExcel RAND関数は0と1の間の数値を返します。それだけです。通常、返された数値を有用なものにマッサージする必要があります。 ...

Excel 2016でユーザー定義関数に説明を追加する - ダミー

Excel 2016でユーザー定義関数に説明を追加する - ダミー

ユーザーがカスタム関数の目的を理解している場合は、関数の機能の説明に役立つ[関数と関数の引数の挿入]ダイアログボックスに表示される説明を追加できます。このような種類の説明をユーザー定義関数に追加するには、Visual Basic Editorの特殊ウィンドウであるオブジェクトブラウザを使用します。

エディタの選択

Excelのテキスト文字列からスペースを削除する - ダミー

Excelのテキスト文字列からスペースを削除する - ダミー

余分なスペースを含むテキストに間違いなく遭遇します。これらの余分なスペースは、テキストの冒頭にあることがありますが、それ以外の場合は末尾に表示されることがあります。

Excelデータ分析アドインの回帰ツール - ダミー

Excelデータ分析アドインの回帰ツール - ダミー

回帰という用語は指数関数的な平滑化ほど悪くはないが、少なくとも数学的にはもっと複雑である。そのため、データ分析アドインの回帰ツールが便利です。アドインは、移動平均と指数平滑化の場合と同様に、数学の責任を負います。あなたはまだ...

Excel 2007ワークシートの名前を変更する - ダミー

Excel 2007ワークシートの名前を変更する - ダミー

Excel 2007がブックのタブ(Sheet1〜 Sheet3)はあまり説明的ではありません。幸いなことに、この記述的な名前が31文字以下であれば、ワークシート・タブの名前をワークシートに貼り付けたものを覚えやすくする名前に簡単に変更できます。