タグ

ブックマーク / perlcodesample.hatenadiary.jp (18)

  • Perlの算術演算子 - Perl入門ゼミ

    Perl › 演算子 › here Perlで四則演算を行うための算術演算子について解説します。 加算 足し算を行うには加算演算子「+」を使用します。 # 足し算 my $add = 1 + 1; 減算 引き算を行うには減算演算子「-」を使用します。 # 引き算 my $sub = 9 - 1; 乗算 掛け算を行うには、乗算演算子「*」を使用します。 # 掛け算 my $multi = 5 * 4; 除算 割り算を行うには除算演算子「/」を使用します。 # 割り算 my $div = 9 / 4; 割り算の答えは割り切れないときは小数になります。 簡略な記述による4則演算 自分自身に対して4則演算を行いたいときは簡略な記述方法があります。 # $add = $add + 3 と同じ $add += 3; # $sub = $sub - 5 と同じ $sub -= 5; # $multi =

    Perlの算術演算子 - Perl入門ゼミ
    iww
    iww 2018/11/29
  • next文 - 次の繰り返しの先頭にジャンプする - Perl入門ゼミ

    Perl › 構文 › here next文を使うと次の繰り返しの先頭にジャンプすることができます。これは、C言語やJavaのcontinue文に該当します。 next next文はwhile文やfor文などの繰り返し文の中で使うことができます。 while (1) { if (条件) { next; } } for (my $i = 0; $i < 10; $i++) { if (条件) { next; } } foreach my $animal (@animals) { if (条件) { next; } } 特定の条件の時だけ、処理を飛ばしたい場合にnext文を利用することができます。 サンプルプログラム next文を使ったサンプルプログラムです。 特定の文字に一致したときにループの先頭にジャンプ ループ処理の途中で、ある条件の場合に、次のループの先頭にジャンプしたい場合にnext

    next文 - 次の繰り返しの先頭にジャンプする - Perl入門ゼミ
    iww
    iww 2018/11/29
  • Perl入門ゼミ

    Perlプログラミングを学びたい人向けのPerl入門講座です。 Perlはテキスト処理に最適化されたプログラミング言語です。Linuxシステム管理、Web開発という分野でも大活躍。後方互換性、ライブラリの安定性、数多くのOSサポートに定評があります。 Perl入門 PerlのインストールPerlのインストール方法を解説。WindowsmacOS、Unix/Linux対応。 基礎文法最速マスターPerlプログラムの基のすべて 文字列処理Perlは文字列処理が得意。文字列の連結や文字列関数などを解説 if文による条件分岐if、elsif、elseの条件分岐の構文をマスターすれば、条件で処理を変えるPerlプログラムが書ける。 for文、while文による繰り返しfor文、while文と繰り返し構文を覚えれば、Perlで繰り返し実行する処理が書けるようになります。 正規表現正規表現を覚えると

    Perl入門ゼミ
    iww
    iww 2018/05/08
    トップクラスのはてなダイアリーっぽくなさ。 すごい
  • grep関数 - 特定の条件を満たす配列要素のみ取得 - Perl入門ゼミ

    Perl › 関数 › here 「grep関数」を使用すると配列の中で条件にマッチした要素のみを取り出すことができます。デフォルト引数$_に@arrayの各要素が渡されてきます。条件文を満たした要素のみが@matchedに追加されます。 # 条件にマッチした要素のみを取り出す @matched = grep { 条件文 } @array; サンプル 正規表現にマッチした要素のみを取得するサンプルです。このサンプルでは整数だけを取り出しています。@numsが(1.23, 123, 43)の場合は@matchedは(123, 43)になります。 # 正規表現にマッチした要素のみを取得 my @nums = (1.23, 123, 43); my @matched = grep { /^\d+$/ } @nums; 正規表現でパターンマッチ演算子(=~)を省略するとデフォルト変数$_がパターン

    grep関数 - 特定の条件を満たす配列要素のみ取得 - Perl入門ゼミ
  • map関数 - 配列のすべての要素の変換 - Perl入門ゼミ

    Perl › 関数 › here 配列のすべての要素を変換するにはmap関数を使用します。@arrayの各要素がデフォルト変数$_に渡されてきますので、コードブロック{ }の中で必要な変換を行います。変換文で最後に評価されたものが@mappedに順番に追加されます。 # 配列のすべての要素の変換 @mapped = map { 変換文 } @array; サンプル mapを使ってすべての要素を2倍するサンプルです。@numsが(1, 2, 3)の場合は@doubledは(2, 4, 6)になります。 # すべての要素を2倍 my @nums = (1, 2, 3); my @doubled = map { $_ * 2 } @nums; mapを使ってすべての要素の先頭の文字列を削除するサンプルです。@strsが('  a', '  b', '   c')の場合は@trimedは('a',

    map関数 - 配列のすべての要素の変換 - Perl入門ゼミ
  • ファイルを1行ずつ読み込む。readline 関数。 - サンプルコードによる Perl 入門

    Perl › 演算子 › here ファイルを一行づつ読み込むには行入力演算子「<>」を使用します。読み込む行がなくなると、undefを返却します。 my $line = <$fh>; 他の演算子と異なり「<」と「>」の間にファイルハンドルを記述することに注意してください。 通常は、while関数と組み合わせて、繰り返して行を読み込むのに利用します。 while(my $line = <$fh>) { # ... } 考え深い方は、上記のように書いた場合は、もし「0」などの偽の値が返ってきた場合は、正しく動かないんじゃないかと感じるのではないでしょうか。行の途中は、改行コードが入りますから、「0」が返ることはありませんが、末尾の場合は「0」が返ってくる可能性があります。 でも、心配しないでください。ファイル演算子は、whileと組み合わされて使う場合のみ、次のように解釈されるからです。 w

    ファイルを1行ずつ読み込む。readline 関数。 - サンプルコードによる Perl 入門
  • Time::Piece - 日付・時刻を扱う新しい方法 - Perl入門ゼミ

    Perl › モジュール › here Perlの5.10からTime::Pieceと呼ばれる時刻を便利に扱うためのモジュールが標準モジュールに加わりました。Perlの5.10以上を使用している場合はTime::Pieceモジュールを日付と時刻を扱いたい場合に利用すると便利です。 従来のPerlでは日付や時刻を直感的に扱う手段が標準モジュールにはありませんでした。日付や時刻を扱うためには少し面倒な作業が必要でした。Time::Pieceは日付と時刻の直感的な操作を提供します。また日付・時刻の書式化の機能や解析する機能も備えます。 Perlには実質的に日付を扱うモジュールのスタンダードといえるDateTimeというモジュールがあります。ただしこのモジュールは標準モジュールではなくCPANからインストールする必要があります。また巨大なモジュールですのでモジュールを読み込む時間が非常にかかります

    Time::Piece - 日付・時刻を扱う新しい方法 - Perl入門ゼミ
  • warn関数 - 警告を出力する - Perl入門ゼミ

    Perl › 関数 › here 警告を出力するにはwarn関数を使用します。メッセージの末尾には警告が出力された行番号が自動的に追加されます。行番号を表示させないようにするには末尾を改行で終えます。 # 警告を出力する # 行番号あり warn $message; # 行番号なし warn "$message\n"; 実際にwarnが行っていることは標準エラー出力にメッセージを出力することです。行番号が含まれていることと「__WANR__」シグナルを発生させることを除いて次のprint文と同じです。警告を意味しない場合でも標準エラー出力にメッセージを出力したい場合にはwarnが利用されることがあります。 # warnの意味は標準エラー出力への出力とほぼ同じ perl STDERR $message; 警告をキャッチする 警告をキャッチすることができます。warnが実行されると__WARN

    warn関数 - 警告を出力する - Perl入門ゼミ
  • 変数に型がないということの利点について考える - Perl入門ゼミ

    Perl › 読み物 PHPPerlRubyPythonなどのスクリプト言語に対して、変数に型がないということを否定的にとらえる人もいるかと思います。特にC言語やJavaなどの静的言語を使ってきた人にとっては、型がないということが不安材料として目に映ることが多いのではないかと思います。 けれども、型がないということは、当に素晴らしいことです。型がないことによって、たくさんの面倒から解放されるからです。 どのような型の値でも代入できる まず基的なこととして変数に型がなければどのような型の値でも代入できるということです。つまり、受け取るときに、どのような型の値を受け取るのかを意識する必要がありません。 my $str = 'Hello'; my $num = 1; my $nums = [1, 2, 3]; my $person = {age => 2, name => 'taro'

    変数に型がないということの利点について考える - Perl入門ゼミ
    iww
    iww 2013/02/27
    どうせなら配列も型なしにしてほしかった
  • 現代的なPerlの記述方法一覧 - Perl入門ゼミ

    Perl › here Perl5.8以降における標準的なPerlの書き方を解説します。 インターネットで検索するとPerl4のころの古い記述がたくさんあります。また書籍などの多くもPerl4の記法で書かれています。Perl4の記法は複雑になりやすく間違いを生みやすいのでこれからPerlを書く人はPerl5の現代的な記法で記述することを強くお勧めします。 strictプラグマとwarningsプラグマ (必須) strictプラグマとwarningsプラグマを有効にします。 use strict; use warnings; use strict;とuse warnings;の2行はスクリプトの最初に必ず記述してください。これらはPerlの文法チェックを厳しくするためのものです。面倒だという軽い気持ちでこれを記述しないと後々当に面倒なことになります。 use strict;とuse wa

    現代的なPerlの記述方法一覧 - Perl入門ゼミ
  • MySQL::Diff - MySQLのデータベースの差分を調べる - Perl入門ゼミ

    Perl › モジュール › here MySQLのデータベースの差分から、差分をなくすようなコマンドを自動生成するツールを探していたら、MySQL::Diffというモジュールを発見した。このモジュールにはmysqldiffというコマンドラインツールがついているので、通常はこちらを使うのが良いみたい。 開発環境と番環境の差分を埋めるのにとても役立つ。すべての差分を表示してくれるわけではなく、テーブル定義に関する部分だけのようなので、トリガやインデックスについては、自分で設定する必要があるようです。 ドキュメントにはオプションの説明がないようなので、--helpコマンドで確認できる。 mysqldiff --help まずデータベースのテーブル定義をmysqldumpで取得しましょう。今は開発環境にいて開発環境のデータベースサーバーに変更を加えていると仮定します。 mysqldump -d

    MySQL::Diff - MySQLのデータベースの差分を調べる - Perl入門ゼミ
  • length関数 - 文字列の長さを取得 - Perl入門ゼミ

    Perl › 関数 › here length関数を使用すると文字列の長さを取得するすることができます。 $ret = length $str; たとえば「abcde」という文字列の長さは5になります。 # 文字列の長さは5 my $length = length 'abcde'; 日語の文字列の長さを正しく取得する length関数は文字列の長さを返却しますが、日語の文字列の長さを正しく取得するためには、覚えておかなければならないことがひとつあります。 それは、内部文字列に対して、length関数を使う必要があるということです。内部文字列というのはEncodeモジュールのdecode関数でデコードされた文字列のことです。 内部文字列については、以下の記事を参考にしてください。 Encodeモジュール - 日語などのマルチバイト文字列を適切に処理する 以下にサンプルプログラムを載せて

    length関数 - 文字列の長さを取得 - Perl入門ゼミ
  • ファイルを作成する - Perl入門ゼミ

    Perl › ファイル操作 › here ファイルを作成する。書き込みモードでファイルをオープンします。Perl には、ファイルを作成するためだけの、関数がありません。ファイルを作成するには、open関数の書き込みモードを使います。 open my $fh, ">", $file; サンプル ファイルを作成するサンプルです。 use strict; use warnings; # ファイルを作成する。open my $fh, ">", $file print "1: ファイルを作成する。"; my $file = "sample_20080519_$$.txt"; # $$ はプロセスID if (-e $file) { die "$file は、すでに存在します。"; } else { open my $fh, ">", $file or die "$file を書き込みモードでオープン

    ファイルを作成する - Perl入門ゼミ
    iww
    iww 2010/09/23
  • ファイルハンドルの概念を理解する - Perl入門ゼミ

    Perl › ファイル入出力 › here Perlにおけるファイルハンドルの概念はややこしいので、解説しておきます。 ファイルハンドルは実体ではなくて概念的なもの Perlでファイルハンドルといった場合は、Perlがファイルハンドルとして認識する複数の実体のことをいっています。ファイルハンドルという実体があるわけではないのです。 Perlが、ファイルハンドルとして認識するもの シンボル( FH ) 型グロブ( *FH ) 型グロブへのリファレンス( \*FH ) IO::Handleクラスのオブジェクト IO::Handleオブジェクトを継承したクラスのオブジェクト( IO::File など ) Perlが、ファイルハンドルとして認識するものは、上記の5つです。以下の記述はすべて有効です。 # 1. シンボル FH open(FH, "<", $file) or die "$!"; #

    ファイルハンドルの概念を理解する - Perl入門ゼミ
  • ヒアドキュメント - 複数行の文字列を簡単に作成 - Perl入門ゼミ

    Perl › 演算子 › here ヒアドキュメントを用いれば複数の文字列をわかりやすく記述することができます。 my $text = <<'EOS'; aaaa iiii uuuu EOS ヒアドキュメントを用いれば、<<'EOS' と EOS にはさまれた行にある文字列を、改行を維持して文字列に代入することができます。 セミコロンの位置に注意しましょう。最後のEOSのあとには、セミコロンはなくて、 最初の行の最後にセミコロンがあります。 EOSという部分は任意の文字列で構いません。このサンプルでは「End Of String」という意味でEOSを使っています。 ヒアドキュメントの中で変数展開する <<'EOS' を <<"EOS" に変更すれば、ヒアドキュメントの中で、変数展開が可能になります。 my $message = 'Hello'; # 変数展開可能なヒアドキュメント my $

    ヒアドキュメント - 複数行の文字列を簡単に作成 - Perl入門ゼミ
    iww
    iww 2010/07/15
    ダブルクォートで囲うと変数展開する、シングルクォートで囲うとしない
  • SQLiteで学ぶデータベース操作の基礎 - Perl入門ゼミ

    Perl › データベース › here Perlを使ってデータベースは初級者が学ぶには今までは少し敷居の高いものでした。まずSQLの実行環境を構築する必要がありすぐに勉強したいという需要を満たすことはできていませんでした。 ですが現在はこの状況は変わりました。現在ではActivePerlをダウンロードするとDBD::SQLiteと呼ばれるSQLiteを利用するためのモジュールがパッケージングされています。 またデータベースに接続するためのユーザから見たインターフェイス部分にあたるDBIというモジュールもパッケージングされています。 ですのでActivePerlの最新版をダウンロードするだけで何の環境構築も行わないでデータベースを学習し始めることができます。 DBD::SQLiteDBIがインストールされていることを確認する まずDBD::SQLiteDBIがインストールされているかど

    SQLiteで学ぶデータベース操作の基礎 - Perl入門ゼミ
  • コマンドプロンプトでUTF-8の文字を表示する - Perl入門ゼミ

    PerlWindows この方法では文字が正しく描画できないようです。(maeyanさんの記事)。 わたしの環境でも駄目でした。 手順 コマンドプロンプトのフォントの変更 コマンドプロンプトの文字コードの変更 ショートカットから文字コードの自動設定を行う。 Windowsのバージョン Windows XP Home Edition Version 2002 Service Pack 2 で行いました。 1. コマンドプロンプトのフォントの変更 コマンドプロンプトを立ち上げる→タイトルバー右クリック →プロパティ→フォントから"MS ゴシック"を選択する。 フォントを"MS ゴシック"に変更します。MS ゴシックは、Unicodeに対応するすべての文字を正しく表示できるわけではないですが、一応ユニコードに対応しています。日語や飾り文字を含む文字を表示することができます。 2. コマン

    コマンドプロンプトでUTF-8の文字を表示する - Perl入門ゼミ
  • Perlのコンテキストを理解しよう - Perl入門ゼミ

    Perl › 構文 › here Perlにはコンテキストと呼ばれる概念があります。コンテキストとは文脈という意味で、次の二つのコンテキストがあります。 スカラコンテキスト リストコンテキスト スカラとして評価される文脈をスカラコンテキスト、リストとして評価される文脈をリストコンテキストと呼びます。 一例としてあげれば、localtime関数は、スカラコンテキストでは、日付・時刻を表示する文字列を返却し、リストコンテキストでは、日付・時刻情報をリストにして返します。 # スカラコンテキスト $date_string = localtime; # リストコンテキスト @date_info = localtime; もうひとつの一例をあげると、配列は、スカラコンテキストでは、配列の個数を、リストコンテキストでは、要素のリストを返します。 # スカラコンテキスト $count = @values

    Perlのコンテキストを理解しよう - Perl入門ゼミ
  • 1