Perl ファイルの入力出力
open関数を使ってファイルを開くことができる
open( ファイルハンドル, モード:文字コード, "ファイルパス" );
ファイルハンドル:読み込んだファイルの内容の名前
ファイルパス:読み込むファイルのパス
モード:openのモード 下記の表を参照
読み取り | 書き込み | 追加 | 新規作成 | 上書き | |
---|---|---|---|---|---|
< | ○ | × | × | × | × |
> | × | ○ | × | ○ | ○ |
>> | × | ○ | ○ | ○ | × |
+< | ○ | ○ | × | × | × |
+> | ○ | ○ | × | ○ | ○ |
+>> | ○ | ○ | ○ | ○ | × |
command | | command を実行し、その出力をパイプ経由でファイルハンドルを渡す | ||||
| command | 出力とファイルハンドルをパイプで command に渡す |
モードに何も付けなかった場合は、入力用(<)としてオープンされる。
> と >>の違いは、> はファイルを空にしてから上書きするのに対し、>> はファイルの終わりからデータを追加する。
+がつくと、ファイルを読み書き両用として利用可能(あまりオススメしないけど・・・)。
サンプル
-----------------
use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';
my $fpath1 = "intest.txt";
if(open(FH, "<:utf8", $fpath1) ){
print "Error:ファイル開けない\n";
exit 1;
}
my @data = <FH>;
close(FH);
foreach my $d (@data){
print $d;
}
my $fpath2 = "outtest.txt";
if(open(FH, ">:encodinf(cp932)", $fpath2) ){
print "Error:ファイル開けない\n";
exit 1;
}
print FH "昭和\n";
print FH "平成\n";
print FH "令和\n";
close(FH);
-----------------
MySQL 正規表現で条件指定(WHERE)
MySQLの条件で悩んでいた時に、
正規表現使えたら楽なのになーと思い調査したところ、
うん、ありますよねーそりゃ
例えば、以下のようなテーブル(parts)で
parts
id | name | price |
a201905150001 | まる | 100 |
a201905150002 | さんかく | 200 |
b201905150001 | しかく | 400 |
b201905150002 | ばつ | 800 |
c201905150001 | だえん | 300 |
idの先頭がa、末尾4桁が0001のものをSELECTしたいときは、
SELECT * FROM parts WHERE id regexp '^a.+?0001$';
result
id | name | price |
a201905150001 | まる | 100 |
とかって書ける(あんまり良い例じゃないかな・・・)