Perlとperlに関するperlcodesampleのブックマーク (1,930)

  • our - パッケージ変数の宣言 - Perl入門ゼミ

    Perl › 構文 › my ourによるパッケージ変数の宣言について解説します。 パッケージ変数の宣言 パッケージ変数を宣言するにはourを使用します。 our $NUM; パッケージ変数は、ひとつの名前空間に属するグローバル変数です。パッケージ変数は、修飾名(パッケージ名)を持ち、ソースコードのどの位置からでも参照できます。 パッケージ変数の変数名は「大文字」にするのが、Perlでは慣習となっています。 パッケージ変数の初期化 パッケージ変数の宣言と同時に「初期化」を行うことができます。 our $NUM = 5; パッケージ変数のスコープと寿命 パッケージ変数の寿命とスコープについて解説します。 パッケージ変数の寿命 パッケージ変数は、宣言して初期化されると、プログラムの最後まで、その値は存在し続けます。 パッケージ変数のスコープ スコープが終わると、パッケージ名なしで、参照できなく

    our - パッケージ変数の宣言 - Perl入門ゼミ
  • Perlゼミ(サンプルコードPerl入門)

    Perl入学式 全6回のPerl入門講座。東京、大阪、沖縄、札幌で開催。(東京は4月と10月スタート、それ以外は5月スタート) YAPC::Japan Perlを軸としたITに関わる全ての人のためのカンファレンス。 東京 吉祥寺.pm 五反田.pm 大阪 なにわPerl 沖縄 沖縄.pm

  • my - レキシカル変数の宣言 - Perl入門ゼミ

    Perl › 構文 › here myを使えばレキシカル変数を宣言することができます。 # レキシカル変数の宣言 my $num; my @nums; my %scores; レキシカル変数というのは、C言語でいうところの、ローカル変数のことです。 Perlにはlocalというキーワードがあるのですが、こちらは実際には、ローカル変数を作成しません。localキーワードは、パッケージ変数を一時的に保存して復元するという機能を持っています。 myによる変数宣言は、Perl 5.6で追加された機能です。これは他の言語におけるローカル変数そのものなのですが、localというキーワードがすでにあるので、紛らわしくならないようにレキシカル変数という名前になったのかもしれません。 Perlでレキシカル変数といえば、他の言語におけるローカル変数のことだと考えてください。 変数宣言とは 変数宣言というのはこ

    my - レキシカル変数の宣言 - Perl入門ゼミ
  • 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入門ゼミ
  • foreach - 配列の各要素の処理 - Perl入門ゼミ

    Perl › 制御構造 › 構文 › foreach文 配列の各要素を順番に処理するにはforeachを使用します。Perlではwhileよりも好んで使用されます。 foreach my $item (@array) { ... } またPerlではforeachはforの別名なので、foreachの代わりにforを使うこともできます。こちらのほうが簡潔でよいと思います。 for my $item (@array) { ... } 要素を順番に出力する方法は以下のページで詳しく解説しています。 for文、while文を使った繰り返しの処理を覚えよう サンプル 配列の要素を順番に出力するサンプルです。 # 配列の要素を順番に出力 my @nums = (3, 4, 5); foreach my $num (@nums) { print "$num\n"; } データ構造が配列のリファレンスの

    foreach - 配列の各要素の処理 - Perl入門ゼミ
  • for文 - 要素番号を使用した繰り返し - Perl入門ゼミ

    Perl › 構文 › for文 要素番号を使って繰り返し処理を行うにはforを使用します。繰り返しの構文としては他にwhileとforeachがありますがforは配列の要素番号が必要な場合に使用されます。 # for for (カウンタ変数の初期化; 条件; カウンタ変数の更新) { ... } for文を使った繰り返しについては以下で詳しく解説しています。 for文、while文を使った繰り返しの処理を覚えよう サンプル 配列の要素を順番に出力するサンプルです。 # 配列の要素を順番に処理 my @nums = (3, 4, 5); for (my $i = 0; $i < @nums; $i++) { print "$i: " . $nums[$i] . "\n"; } データ構造が配列のリファレンスの場合に配列の要素を順番に出力するサンプルです。 # 配列の要素を順番に処理(配列の

    for文 - 要素番号を使用した繰り返し - Perl入門ゼミ
  • Perlゼミ(サンプルコードPerl入門)

  • 三項演算子 A ? B : C - Perl入門ゼミ

    Perl › 演算子 › here Perlには、条件によって、返却する値を変えることができる三項演算子というものがあります。 条件 ? 真の場合に返す値 : 偽の場合に返す値 上の構文だけ見ると少しわかりにくいので、実際にサンプルを書いてみます。 my $flag = 1; my $num = $flag ? 3 : 5; 「$flag」が「1」で真の値です。三項演算子は条件が真の場合には「?」の直後の値を返却します。ですので「3」が「$num」に代入されます。 次は、条件が偽の場合のサンプルです。 my $flag = 0; my $num = $flag ? 3 : 5; 「$flag」が「0」で偽の値です。三項演算子は条件が真の場合には「:」の直後の値を返却します。ですので「5」が代入されます。 三項演算子は慣れるまでは少し読みにくい構文です。前半だけを見ると「$num」に「$fl

    三項演算子 A ? B : C - Perl入門ゼミ
  • if修飾子 - 後置のif - Perl入門ゼミ

    Perl › 構文 › here if修飾子を使うとifを後置することができます。 文 if 条件; if修飾子を使ったサンプルです。正規表現を使って、先頭が「#」ならば次の行に移動という処理を行っています。 for my $line (@lines) { next if $line =~ /^#/; } 一行で書ける簡単な条件のときはif修飾子を使うメリットがあります。nextやlastと組み合わせて 「next if 条件」「last if 条件」などがよく利用されます。 if修飾子のメリット 通常のif文と比べてif修飾子のメリットはパフォーマンスです。if文はスコープを作るのに対して、if修飾子はスコープを作りません。そのためif修飾子の方がパフォーマンスがよいです。 unless修飾子 if修飾子と同じように後置することができるunless修飾子というものがあります。 $num1

    if修飾子 - 後置のif - Perl入門ゼミ
  • Perlゼミ(サンプルコードPerl入門)

  • Perlゼミ(サンプルコードPerl入門)

  • Perlにおける真偽値 - Perl入門ゼミ

    Perl › 構文 › here Perlにおける真偽値を解説します。Perlにおける偽値は次の五つです。 1 undef 未定義値 2 "" 空文字列 3 0 0 4 "0" 文字列の0 Perlにおける真値は上記以外すべてです。 未定義値、数値の0、空の文字列、0と等しい文字列、空のリストだけが偽値になります。 真になる値の例 # 1 1; # 文字列 "Hellow" # オブジェクト my $obj = Point->new; # 文字列の"0.0" "0.0" "0.0"は、数値としては0と等しいが、真として扱われます。 サンプルプログラム 真偽値のサンプルです。 # 真偽値のサンプル my $var; # 偽。定義した直後の変数はundef $var = undef; # 偽。 $var = 0; # 偽。 $var = 0.0 # 数値で0と等価なものは偽。 $var = 1

    Perlにおける真偽値 - Perl入門ゼミ
  • if 〜 elseif 〜 else - 複雑な条件分岐を行う - Perl入門ゼミ

    Perl › 構文 › here if文を利用すれば、条件分岐を行うことができます。条件が真の場合に、括弧の中が実行されます。 if (条件) { ... } またelsifを使用すれば、複数の条件分岐を行うことができます。 if (条件1) { ... } elsif (条件2) { ... } elseを利用すれば、条件が満たされなかった場合の処理を行うことができます。 if (条件) { ... } else { 条件が満たされなかった場合の処理 } if文を使った条件分岐の詳しい使い方については以下で解説しているのでご覧ください。 if文による条件分岐 条件分岐 if 〜 else if (条件) { 条件を満たした場合 } else { 条件を満たさなかった場合 } 条件を満たすか、満たさないかで、条件分岐する場合に使う。 条件分岐 if 〜 elsif if (条件1) { 条

    if 〜 elseif 〜 else - 複雑な条件分岐を行う - Perl入門ゼミ
  • 論理積 論理和 否定【ページ移転】 - Perl入門ゼミ

    このページの内容は以下のページに移転しました。 Perlの論理演算子 論理積は&&、論理和は||、否定は!で表現します。 論理積、論理和、否定 論理積 A かつ B : A && B 論理和 A または B : A || B 否定 Aでない : !A 否定演算子は、0を1に変換し, 0でない数字を、1に反転させる。 論理積(A かつ B) if ($num > 1 && $num < 4) { print "\$numは、1より大きく、4より小さい\n\n"; } 論理和(A または B) if ($pet eq 'dog' || $pet eq 'cat') { print "\$pet は、'dog' あるいは、'cat' のどちらかである。\n\n"; } 否定(Aでない) if (!$num0) { print "!\$num は、真\n"; } サンプルコード 論理積、論理和、否

    論理積 論理和 否定【ページ移転】 - Perl入門ゼミ
  • Perlの比較演算子 - Perl入門ゼミ

    Perl › 演算子 › here 比較演算子は、二つの値の大小について比較する演算子です。Perlには、数値を比較する数値比較演算子と文字列が辞書順でどちらが大きいかを比較する文字列比較演算子があります。 数値比較演算子 数値比較演算子は、値を数値として比較するときに利用する演算子です。 演算子 意味 A == B AとBは等しい A != B AとBは等しくない A > B AはBより大きい A >= B AはB以上 A < B AはBより小さい A <= B AはB以下 比較演算子は、条件を満たすと真値、満たさない場合は偽値を返します。 Perlの真偽値については以下の記事も参考にしてください。 Perlにおける真偽値 if文の条件部で使う 変数に代入された数値を比較するサンプルプログラムをif文を使って書いてみます。 my $num1 = 4; my $num2 = 3; if (

    Perlの比較演算子 - Perl入門ゼミ
  • if文 - 条件分岐 - Perl入門ゼミ

    Perl › 構文・文法 › here 条件分岐を行うにはifを使用します。 if (条件) { ... } if文を使った条件分岐については以下で詳しく解説していますので、こちらをご覧ください。 if文による条件分岐

    if文 - 条件分岐 - Perl入門ゼミ
  • ロック用のファイルを使ってファイルロックする - Perl入門ゼミ

    Perl › ファイル入出力 › here ロック用のファイルを作ってそれにロックを掛けることもできます。ファイルロック用のファイルを作って排他制御を行う利点は、更新対象のファイルを削除したり、リネームしたりできることです。 以下のサンプルは前回のサンプルをロック用のファイルを使うように修正したものです。ループ用のスクリプトは前回とまったく同じです。ロックするためのスクリプトはsample_20080815.pl、ループ用のスクリプトは、data_20080815.txtで保存してください。 実行方法は、前回のサンプルを参照してください。 use strict; use warnings; use Fcntl qw/:DEFAULT :flock :seek/; # ロック用のファイル(なければ作成) my $lock_file = "lock"; sysopen(my $lock_fh,

    ロック用のファイルを使ってファイルロックする - Perl入門ゼミ
  • flock関数 - ファイルの排他制御 - Perl入門ゼミ

    Perl › 関数 › here flock関数を使用すれば、ファイルの排他制御を行うことができます。今回は、flock関数を実際に使って順番を守ってファイルに読み書きを行います。(一般的には、排他処理と呼びます。) 以下は、実際に順番を守って読み書きしているとことを実感するサンプルです。sample_20080814.pl という名前で保存してください。 use strict; use warnings; use Fcntl qw/:DEFAULT :flock :seek/; # 上書きするので注意 my $file = "data_20080814.txt"; # 読み書きモードでオープン(あまり安全でない) # O_CREATでファイルがなければ作成する。 sysopen(my $fh, $file, O_RDWR | O_CREAT) or die "Cannot open $f

    flock関数 - ファイルの排他制御 - Perl入門ゼミ
  • ファイルロックとは - Perl入門ゼミ

    Perl › ファイル入出力 › here ひとつのファイルに対して複数人で同時に書き込みを行うとファイルは破損します。複数のプロセスがひとつのファイルに対して並行して書き込み行う場合は、それぞれのプロセスが順番を守る必要があります。ファイルロック機構を使用すれば、複数のプロセスが順番を守ってファイルに安全にアクセスすることができます。 ファイルロックは、排他制御とも呼ばれ、複数のプロセスが順番を守ってファイルを利用する仕組みです。Perlには、flock関数というファイルロックを行うための仕組みがあります。( Window98などflockが利用できないOSが一部あります。) 順番を守る必要がある場合 ひとつのファイルに対して読み込みを並列で行う場合は、順番を守る必要がありません。読み込むだけなので、ファイルの破損やデータの不整合を心配する必要がないからです。 順番を守る必要があるのは、

    ファイルロックとは - Perl入門ゼミ
  • ランダムアクセスを使って読み書きする - Perl入門ゼミ

    Perl › ファイル入出力 › here 変更したい箇所だけをピンポイントで指定して、変更して書き戻すランダムアクセスのサンプルです。ランダムアクセスというのは一般的に固定長のバイナリファイルに対して使われますが、簡便のためここでは固定長テキストファイルを使います。 use strict; use warnings; # seek の位置を指定するオプションを使用するために使用 use Fcntl qw(:seek); # ランダムアクセスによってファイル内容を書き換える。 my $file = "data_20080810.txt"; # 読み書きモードでオープン(あまり安全でない) open(my $fh, "+<", $file) or die "Cannot open $file"; # 16バイト my $len_rec = 16; # レコードの先頭 my $pos_name

    ランダムアクセスを使って読み書きする - Perl入門ゼミ