便利で役立つPerl好きな私🐪

よく使うPerlスニペット

Perlでアレ、どうやって書くんだっけ?と毎回悩むものの、エディタに設定を組み込む気合いも足りない私は、よく書くアレをどっかからコピペで済ませたい。

そんな、ものぐさ太郎な私のためのメモ書きです。

カレントディレクトリのlibからモジュール読み込みしたい

use FindBin;
use lib "$FindBin::Bin/lib";

標準入出力を全部UTF-8にしたい

use strict;
use warnings;
use utf8;
use open IO => qw/:encoding(UTF-8) :std/;

標準入出力を全部Shift_JISにしたい

use strict;
use warnings;
use utf8;
use open IO => qw/:encoding(cp932) :std/;

入出力を個別に(エン|デ)コードしたい

use strict;
use warnings;
use utf8;
use Encode 'encode', 'decode';

標準入出力をまとめて(エン|デ)コードしたい

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

データをダンプして中身を丸見えにしたい

use Data::Dumper;

print Dumper $secret;

MySQLに接続したい

use DBI;

my $database = "DB_NAME";
my $hostname = "localhost";
my $user = "YOUR_USER_NAME";
my $password = "YOUR_PASSWORD";
my $dbh = DBI->connect(
    "DBI:mysql:$database:$hostname",
    $user,
    $password
) or die "cannot connect to MySWL: $DBI::errstr";
$dbh->do("set names utf8");

ハッシュのキーとバリューを展開したい

my %address = (
    "上岡" => "愛知県稲沢市",
    "山田" => "東京都渋谷区",
);

while (my ($key, $value) = each(%address)){
    print "key=$key, value=$value\n";
}

ハッシュのキーを展開したい

my %address = (
    "上岡" => "愛知県稲沢市",
    "山田" => "東京都渋谷区",
);

foreach my $key(keys(%address)){
    print "$address{$key}\n";
}

ファイルを読み込む

sub open_file {
    my $filename = shift;
    open my $fh, '<', $filename
        or die "Couldn't open $read_filename : $!" ; return $fh;
}

ファイルに書き込む

sub write_file {
    my ($filename, $contents) = @_;
    open my $write, '>>', $filename
        or die "Couldn't open : $!";
    print {$write} $contents;
    close $write;
}