use strict;
use warnings;
use Test::More;
my %hash = ( key1 => 'val1', key2 => 'val2' );
# スライス
my ( $a, $b ) = @hash{qw/key1 key2/};
is $a, 'val1', 'val1';
is $b, 'val2', 'val2';
# keysを使っても取れるが、順番はランダム
my ( $a1, $b1 ) = @hash{ keys %hash };
is_deeply + { $a1 => 1, $b1 => 1 }, +{ 'val1' => 1, 'val2' => 1 }, "keys";
# ハッシュリファレンスでも使えます
my $hash = +{ key1 => 'val1', key2 => 'val2' };
my ( $a2, $b2 ) = @$hash{qw/key1 key2/};
is $a2, 'val1', 'hash ref val1';
is $b2, 'val2', 'hash ref val2';
# マージにも使えますね
my $hash1 = +{ key1 => 'val1', key2 => 'val2' };
my $hash2 = +{ key3 => 'val3', key4 => 'val4' };
my $ret = +{
key1 => 'val1',
key2 => 'val2',
key3 => 'val3',
key4 => 'val4',
};
@$hash2{ keys %$hash1 } = @$hash1{ keys %$hash1 };
is_deeply $hash2, $ret, 'merge';
# 単純なマージならこれでもできます
my $hash3 = +{ %$hash2, %$hash1 };
is_deeply $hash3, $ret, 'merge2';
done_testing;
perlスライス
perlのスライスってわかりづらいよね。
vimのシンタックスハイライト
vimを使ってテンプレートエンジンを編集するときに、
色が出ないよーってことでいろいろ設定してみました。
ここからファイル(tt2.tar.gz)をダウンロード
http://www.vim.org/scripts/script.php?script_id=830
~/.vim/syntax/を作る(なければ)
ダウンロードしたファイル(tt2.vim,tt2html.vim)をコピーする
シンタックスハイライトを設定する
au BufNewFile,BufRead *.mt setf tt2html
色が出ないよーってことでいろいろ設定してみました。
ここからファイル(tt2.tar.gz)をダウンロード
http://www.vim.org/scripts/script.php?script_id=830
~/.vim/syntax/を作る(なければ)
ダウンロードしたファイル(tt2.vim,tt2html.vim)をコピーする
シンタックスハイライトを設定する
au BufNewFile,BufRead *.mt setf tt2html
mysqldumpでバックアップ
mysqldumpを使ってmysqlのバックアップをとる
ただピンポイントでやりたい場合、既にあるSQLにちょっと追加したい場合など、
lvやlessでコピペしたい
ただピンポイントでやりたい場合、既にあるSQLにちょっと追加したい場合など、
lvやlessでコピペしたい
mysqldump -uroot data-base-name
いろいろなperlを持っているPCの実行
scriptの先頭に#!/usr/bin/perl ってかかれてるのに(shebang 行というらしい)、
実際にはperlbrewでいれたperl~/perl5/...にあるやつを使いたい。
これで大丈夫。
実際にはperlbrewでいれたperl~/perl5/...にあるやつを使いたい。
#!/usr/bin/env perl
これで大丈夫。
perlで同じようなメソッドを楽に定義する
同じような処理をする似たようなメソッドはfor文使って楽しちゃいましょう。
例えば、
こんなやつはこんな感じでやっつけちゃいましょ。
例えば、
sub debug {
my ($self, @args) = @_;
$self->log->debug(@args);
}
sub info {
my ($self, @args) = @_;
$self->log->info(@args);
}
sub warn {
my ($self, @args) = @_;
$self->log->warn(@args);
}
こんなやつはこんな感じでやっつけちゃいましょ。
for my $name (qw/debug info warn/) {
no strict 'refs';
*{$name} = sub {
my ($self, @args) = @_;
$self->log->$name(@atgs);
}
}
DBIモジュール
DBIモジュールに付いて調べる
1レコードづつ取得する
selectrow_array => 配列
selectrow_arrayref => 配列リファレンス
selectrow_arrayref => ハッシュリファレンス
複数レコード取得
selectall_arrayref => 配列リファレンス
selectall_arrayref (Slice[]) => 配列リファレンス
selectall_arrayref (Slice+{}) => ハッシュリファレンス
selectall_arrayref (Columns) => ハッシュリファレンス
selectall_hashref => ハッシュリファレンス
1レコードづつ取得する
selectrow_array => 配列
my @ret = $dbh->selectrow_array(
'select user_id, reg_date, nickname from user_data');
is_deeply \@ret, [ 10001, 1297573789, 'はるく' ];
selectrow_arrayref => 配列リファレンス
my $ret = $dbh->selectrow_arrayref(
'select user_id, reg_date, nickname from user_data');
is_deeply $ret, [ 10001, 1297573789, 'はるく' ];
selectrow_arrayref => ハッシュリファレンス
my $ret = $dbh->selectrow_arrayref(
'select user_id, reg_date, nickname from user_data');
is_deeply $ret, +{ user_id => 10001, reg_date => 1297573789, nickname => 'はるく' };
複数レコード取得
selectall_arrayref => 配列リファレンス
my $ret = $dbh->selectall_arrayref('select user_id, reg_date, nickname from user_data');
is_deeply $ret, [[10001, 1234567, 'はるく'], [10002, 1234567, 'ひかり']];
selectall_arrayref (Slice[]) => 配列リファレンス
my $ret = $dbh->selectall_arrayref('select user_id, reg_date, nickname from user_data', +{ Slice => []});
is_deeply $ret, [[10001, 1234567, 'はるく'], [10002, 1234567, 'ひかり']];
selectall_arrayref (Slice+{}) => ハッシュリファレンス
my $ret = $dbh->selectall_arrayref('select user_id, reg_date, nickname from user_data', +{ Slice => +{}});
is_deeply $ret, [ +{ user_id => 10001, reg_date => 1234567, nickname => 'はるく'}, ... ];
selectall_arrayref (Columns) => ハッシュリファレンス
my $ret = $dbh->selectall_arrayref('select user_id, reg_date, nickname from user_data', +{ Columns +{}});
is_deeply $ret, [ +{ user_id => 10001, reg_date => 1234567, nickname => 'はるく'}, ... ];
selectall_hashref => ハッシュリファレンス
my $ret = $dbh->selectall_hashref($sql, 1); # user_idでも一緒
is_deeply $ret => +{
10001 => +{ user_id => 10001, reg_date => 12345, nickname="はるく"},
10002 => +{ user_id => 10002, reg_date => 12346, nickname="ひかり"},
}
my $ret = $dbh->selectall_hashref($sql, [1, 2]); # qw/user_id reg_date/でも一緒
is_deeply $ret => +{
10001 => +{ 12345 => +{ user_id => 10001, reg_date => 12345, nickname="はるく"} },
10002 => +{ 12346 => +{ user_id => 10002, reg_date => 12346, nickname="ひかり"} },
}
登録:
投稿 (Atom)
ReactNativeでAndroid対応する話
前提 ReactNativeでiOS版のアプリをリリースしていて、Android版をリリースする話 トラブルシューティング Build.VERSION_CODES.Q が存在しないエラー compileSdkVersionを29以上にすると解決 メモリー足りないエラー Execu...
-
前提 ReactNativeでiOS版のアプリをリリースしていて、Android版をリリースする話 トラブルシューティング Build.VERSION_CODES.Q が存在しないエラー compileSdkVersionを29以上にすると解決 メモリー足りないエラー Execu...
-
切り取り(cat)やコピー(copy)した内容を置き換える クリップボード(iOSではペーストボードというらしい)に追加や削除したタイミングでnotificationが発行される - 追加 : UIPasteboardChangedNotification ...
-
UILabelの高さ取得に気をつけること 1. xibやstoryboradの指定したFontと、プログラムで指定しているフォントは同じかどうか 2. viewDidLoad時ではまだviewのサイズが決まっていない ロジック NSString func...