個人財務 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プログラムに調整する - ダミー

エディタの選択

オンラインデートジレンマ:ディッシングアウト拒否 - ダミー

オンラインデートジレンマ:ディッシングアウト拒否 - ダミー

インターネットは奇妙な場所で、個人的な経験はインターネット上で完全に共通しています。その言葉は一般的なものであり、丁寧でも丁寧でもないことに注意してください。適切な方法で拒否を排除する方法を知る必要があります。あなたは本当の人生と同じように、すばやくそれをする必要があります。

ダミー

ダミー

多くのオンラインデートサイトでは、タグラインと呼ばれるフレーズを表示できます。マッチのようなサイトもあります。 Comでは、長い画面名と長いタグラインを選択できます。しかし、そのオプションはちょっと圧倒されるかもしれませんので、比較的短い名前で、あなたの創造的なジュースに焦点を当てます...

多くのコーヒーは二番目の日付がないので? - 50年後のダミー

多くのコーヒーは二番目の日付がないので? - 50年後のダミー

は、始動のトラブルなど多くの課題を提示することがあります。コーヒーを飲んで最初のミーティングが不足しているにもかかわらず、そこでの関係が終わった場合は、終了する気がするかもしれませんが、そうしないでください。手がかりを探す3つの場所は次のとおりです。写真やプロフィールであなた自身を虚偽表現しましたか?あなたの写真は... ...

エディタの選択

霊的実現の多面体 - ダミー

霊的実現の多面体 - ダミー

世界の偉大な神秘家の物語を読んだらあなたは霊的な経験が驚異的な形と大きさの配列に入っていることが分かります。例:一部のアメリカ先住民のシャーマンは、部族メンバーの同盟国やその他の治癒のためのリソースを見つけるために、他の次元に旅する改造国に入る。ヒンズー教徒の一部...

心を練習する感謝の気持ちを育む - ダミー

心を練習する感謝の気持ちを育む - ダミー

あなたが気づいたら感謝しますあなたがしているものではなく、あなたが持っているもの。思いやりが感謝の出発点です。マインドフルさがなければ、あなたの人生でうまくいっているすべての事柄を認識することはできません。したがって、感謝の気持ちのある人は気をつけている人です。

レギュラー・メディテーション・プラクティスの作成方法 - ダミー

レギュラー・メディテーション・プラクティスの作成方法 - ダミー

あなたは毎日できる瞑想の練習をすることができます。簡単にしておいてください。結局のところ、瞑想のポイントは、あなたの体をリラックスさせ、あなたの忙しい心を和らげ、あなたの人生をより複雑にすることではありません。ここには...

エディタの選択

ミノーニクス - ダミーを使ったミラー類推テストの語彙を学ぶ

ミノーニクス - ダミーを使ったミラー類推テストの語彙を学ぶ

ミラー類推テスト(MAT)さまざまな科目に関する知識が必要です。また、語彙を増やすことは、MATの成功の鍵です。ニーモニックは、膨大な語彙をマスターするための強力なツールです。

のLO QU​​Eのデベ・トラアー - Yなしtraer-らセントロデPruebasデGED

のLO QU​​Eのデベ・トラアー - Yなしtraer-らセントロデPruebasデGED

アンティデSalirデSUカーサパラIRらセントロデpruebasデGED EL DIAデルexamen、asegúreseデtraer CON usted UNO POCOSartículosimportantes(コモSUidentificaciónCONfotografía) - Y dejarエンカーサalgunos otras cosas(コモ国連bocadilloパラ・ラ・メディアMananaのOウナcalculadoraデアルタtecnología)QUE ...

あなたのGREを噛み砕くためにあなたができることを想像する - ダミー

あなたのGREを噛み砕くためにあなたができることを想像する - ダミー

GRE試験を完全に吹き飛ばすために人々がする狂気のことを考えてみましょう。これらの災害に気付くことで、災害があなたのテスト体験に影響するのを防ぐことができます。集中力を失うあなたは、退屈な退屈な読書理解の途中にいるときに、最悪のことをすることができます...