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

  • シーケンシャルアクセスとランダムアクセス - Perl入門ゼミ

    Perl › ファイル入出力 › here ファイルにアクセスする方法には、シーケンシャルアクセスとランダムアクセスという2種類の方法があります。 シーケンシャルアクセスとは、ファイルを先頭から順番に読み込んでいくアクセスのことで、ランダムアクセスとは、ファイルの特定のバイト位置を指定するアクセスのことです。 シーケンシャルアクセスは、可変長のテキストファイルを扱う場合に利用され、ランダムアクセスは固定長バイナリファイル高速に処理する場合に利用されます。 シーケンシャルアクセスとは シーケンシャルアクセスは順次アクセスとも呼ばれます。シーケンシャルアクセスとは、ファイルを先頭から順番に読み込んでいくアクセス方法のことです。ファイルをopen関数でオープンして、readline関数で1行づつ読み込んでいくのは、シーケンシャルアクセスになります。テキストファイルは、この方法でアクセスします。

    シーケンシャルアクセスとランダムアクセス - Perl入門ゼミ
  • オプションを指定できるフィルタプログラムを書く - Perl入門ゼミ

    Perl › ファイル入出力 › here コマンドライン引数で、オプションを指定できるフィルタプログラムを書いてみます。オプションに指定できるのは、切り出す列の位置と区切り文字です。 use strict; use warnings; # コマンドラインオプションを扱うためのモジュール use Getopt::Long 'GetOptions'; # Unix風のフィルタプログラミングを記述する。 # 今回はカンマ区切りの文字列の一列目を取り出すフィルタプログラムです。 # コマンドラインオプションが指定されなかった場合のデフォルト値 my $col = 1; my $sep = ','; # コマンドラインオプションを受け取る GetOptions( 'col=i' => \$col, 'sep=s' => \$sep, ); # . など正規表現で特別な意味を持つ文字が指定された #

    オプションを指定できるフィルタプログラムを書く - Perl入門ゼミ
  • Unix風のフィルタプログラミングを書く - Perl入門ゼミ

    Perl › ファイル入出力 › here Unix風フィルタプログラミングと呼ぶべき種類のプログラミングがあります。特徴を述べると ファイルを引数で渡すか標準入力で渡すかをユーザが選択できる。 条件はオプションとして指定(-s10のような記述)する。 ということです。 Perlには、Unix風フィルタプログラミングを記述する便利な記述方法があります。以下はサンプルです。(オプションを指定する場合は次回) use strict; use warnings; # Unix風のフィルタプログラミングを記述する。 # 今回はカンマ区切りの文字列の一列目を取り出すフィルタプログラムです。 # 特殊な行入力演算子<> while (<>) { # 読み込まれた行は特殊変数 $_に代入される。 chomp $_; my @items = split(/,/, $_); print $items[0]

    Unix風のフィルタプログラミングを書く - Perl入門ゼミ
  • パイプの仕組みを理解する - Perl入門ゼミ

    Perl › ファイル入出力 › here 現代的なOSでは、「あるプログラムの標準出力」を「別のプログラムの標準入力」に渡すことが可能です。このOSの機能をパイプと呼びます。 パイプという機能は非常に便利な機能です。標準入力からデータを受け取り、標準出力に出力するようにプログラムを作成しておけば、複数のプログラムを連動させることができます。 1. パイプのイメージ |-----------| |-----------| |-----------| 最初の入力 --->|プログラムA|--->|プログラムB|--->|プログラムC|---> 最終的な出力 |-----------| |-----------| |-----------| パイプを使えば、プログラムAの標準出力をプログラムBの標準入力に連結することができます。さらに、プログラムBの標準出力をプログラムCの標準入力に連結するこ

    パイプの仕組みを理解する - Perl入門ゼミ
  • 標準入出力とリダイレクト - Perl入門ゼミ

    Perl › ファイル入出力 › here リダイレクトとは、標準入力の入力元、標準出力、標準エラー出力の出力先を切り替えるOSの機能のことです。現代的なOSは基的なリダイレクトの機能を備えています。 リダイレクトの中でも覚えておかなければならないのは、標準入力の入力元をファイルに切り替えるリダイレクト、標準出力の出力先をファイルに切り替えるリダイレクト、標準エラー出力の出力先をファイルに切り替えるリダイレクトの3つです。 1.準備 リダイレクトの動きを見るためのサンプルを作っておきます。 標準入力から1行読みこんで、標準出力に書き込みます。また標準エラー出力に"error\n"という文字列を出力します。 このスクリプトを好きな名前で保存してください。ここでは、sample_20080731.plという名前とします。 リダイレクトでファイルに出力する場合は、ファイルの上書き確認がされませ

    標準入出力とリダイレクト - Perl入門ゼミ
  • 標準入力 標準出力 標準エラー出力 - Perl入門ゼミ

    Perl › ファイル入出力 › here 標準入力、標準出力、標準エラー出力について書きます。 標準入力 標準出力 標準エラー出力 1.標準入力 標準入力の読込先はキーボードです。標準入力を利用すると、キーボードから入力を受け取っることができます。キーボードから受け取った文字をそのまま出力するプログラムを書くと次のようになります。 STDIN というファイルハンドルが標準入力を表します。 use strict; use warnings; # STDIN という標準入力を表すファイルハンドルから一行読み込み。 my $line = <STDIN>; print $line; STDINから読み込むと、キーボードから読みこまれることがわかると思います。 2.標準出力 標準出力の出力先は、ディスプレイです。標準出力に書き込むとディスプレイに表示することができます。STDOUTというファイルハ

    標準入力 標準出力 標準エラー出力 - Perl入門ゼミ
  • 標準出力をリダイレクトしてファイルに書き込む - Perl入門ゼミ

    Perl › ファイル入出力 ファイルに出力する最も簡単で頻繁に使われる方法があります。リダイレクトというOSの機能を使って、print関数で行っているディスプレイへの出力を、ファイルに変更します。 以下は、ディスプレイに文字列を表示するサンプルです。 use strict; use warnings; # ファイルへの書き込み print "writed to file\n"; 上記のファイルを、sample20080726.pl という名前で保存して、コマンドプロンプトかシェルで perl sample20080726.pl > 出力するファイル名と入力してください。( ディスプレイへの出力が、指定したファイルへの出力に変更されます。) コード解説 (1)標準出力とは 「標準出力」とはディスプレイのことです。print 関数は、デフォルトで標準出力であるディスプレイに出力を行います。以

    標準出力をリダイレクトしてファイルに書き込む - Perl入門ゼミ
  • Perlゼミ(サンプルコードPerl入門)

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

  • getc関数 - ファイルから一文字ずつ読み込む - Perl入門ゼミ

    Perl › 関数 › here getc関数を使って1文字づつ読み込むこともできます。 my $c = getc $fh; サンプル 以下は、1文字読み込みのサンプルです。 use strict; use warnings; # 1文字読み込み # 読み込みたいファイル名 my $file = shift; print "1: 1文字ずつ読み込む。\n"; open(my $fh, "<", $file) or die "Cannot open $file: $!"; # 1文字ずつ読み込むにはgetc関数を使います。 while (defined (my $c = getc $fh)) { print $c; } close $fh; Perl › 関数 › here

    getc関数 - ファイルから一文字ずつ読み込む - Perl入門ゼミ
  • ファイルを1行ずつ読み込む。readline 関数。 - サンプルコードによる Perl 入門

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

    ファイルを1行ずつ読み込む。readline 関数。 - サンプルコードによる Perl 入門
  • sysopen関数 - オープンモードを詳細に指定 - Perl入門ゼミ

    Perl › 関数 › here sysopen関数を使用すればオープンモードを詳細に指定することができます。open関数のオープンモード以上のことを行いたい場合に利用できます。 sysopen(my $fh, $file, O_WRONLY | O_EXCL | O_CREAT) Perlのsysopenは、C言語のfopenと同等の関数です。第1引数にファイルハンドル、第2引数にファイル名、第3引数に、オープンフラグを指定します。必要であれば第4引数にパーミッションを8進数で指定でき、デフォルトのパーミッションは 0666です。 オープンフラグは、ビット演算子 | で結ぶことで複数指定できます。オープンフラグの組み合わせでオープンモードを指定します。 たとえば、ファイルが存在していなければ作成して書き込みモードでオープンということをしたいとしましょう。 open関数では、書き込みモード

    sysopen関数 - オープンモードを詳細に指定 - Perl入門ゼミ
  • Perlゼミ(サンプルコードPerl入門)

  • open関数 - ファイルをオープンする - Perl入門ゼミ

    Perl › 関数 › here ファイルをオープンするには、open関数を使用します。第一引数は、取得したファイルハンドルを代入するための変数、第二引数はオープンモード、第三引数は、ファイル名です。ファイルのオープンが成功したときは、真が、失敗したときは偽が返ります。 $ret = open($fh, $mode, $file); ファイルをオープンするときは次のような書き方が一般的です。これを基礎にして、その他の方法を学習してください。 open(my $fh, "<", $file) or die "Can't open $file:$!"; 「<」というのは、オープンモードで、ファイルを読み込むときは、「<」を指定します。 よく使われるオープンモード オープンモード 記号 読み込み 書き込み > 追加書き込み >> オープン関数の第2引数に指定します。ダブルクォートかシングルクォー

    open関数 - ファイルをオープンする - Perl入門ゼミ
  • Perlゼミ(サンプルコードPerl入門)

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

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

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

  • umask関数 - ビットマスクでパーミッションを制限する - Perl入門ゼミ

    Perl › 関数 › here ビットマスクを指定するにはumask関数を使用します。 # 8進数で指定 umask 0022; ビットマスクを指定するには、umask関数を使います。パーミッションの指定は3桁の8進数で行います。Perlでは先頭に0をつけることで8進数をあらわすことができます。 ファイル作成時のパーミッションはビットマスクに影響を受けます。ビットマスクとはファイルやディレクトリの作成時のパーミッションを制限するビット列です。以下は、ビットマスクを指定するサンプルです。 ビットマスクとは ビットマスクはsysopen関数やmkdir関数でのファイルやディレクトリの作成時のパーミッションに影響を及ぼします。 たとえばsysopen関数で指定するパーミッションが666で、ビットマスクの設定が022だった場合、作成されるファイルのパーミッションは644になります。 ファイルをプ

    umask関数 - ビットマスクでパーミッションを制限する - Perl入門ゼミ
  • パーミッションについて理解しよう - Perl入門ゼミ

    Perl › ファイル操作 UNIX系のOSでは、ファイルパーミッションという仕組みがあります。(このサイトでは便宜のため、UNIX系OSというのはUNIX系OSとLinux系OSの両方を指すことにします。)Perlは、WindowでもUnixでも実行できるマルチプラットフォームな言語ですが、根的に仕組みが違う部分についてはWindowsとUNIXの両方で実行することができません。 Perlは、Unix生まれですので、標準関数の中にもUnix系OSでのみ意味を持つものがあり、そのひとつがファイルパーミッションに関するものです。今回は、ファイルパーミッションというUNIXの概念を簡単に解説します。 パーミッション(permission)は日語に直すと「許可」という意味です。この許可の意味は以下のように考えるとわかりやすいと思います。(ここからは、ファイルパーミッションを略してパーミッショ

    パーミッションについて理解しよう - Perl入門ゼミ
  • chmod関数 - ファイルパーミッションを変更する - Perl入門ゼミ

    Perl › 関数 › here ファイルのパーミッションを変更するにはchmod関数を使います。 chmod 0666, $file; パーミッションを変更するには、chmod関数を使います。第1引数は、8進数でパーミッションを指定します。Perlで8進数を表現するには、数字の先頭に0をつけます。 第2引数はファイルを指定します。また第2引数にはファイルのリストを指定することもできます。 戻り値はパーミッションの変更に成功したファイルの個数になります。chmodが失敗した場合は$!にエラーの内容が格納されます。 パーミッションについては以下で詳しく解説しています。 パーミッションについて理解しよう サンプル パーミッションを変更するサンプルです。 use strict; use warnings; my $file = shift or die "Usage: $0 file\n"; #

    chmod関数 - ファイルパーミッションを変更する - Perl入門ゼミ
  • Perlゼミ(サンプルコードPerl入門)

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