Basic Werk | Blog | Contact


MEMOMEM

Perl_hash_and_functions



Perl の hash 操作。

なぜかよく忘れるのでメモ。



# hash の key と value を # それぞれ変数にバインドするときは each 関数を使う my %hash = ("key1" => "value1", "key2" => "value2",); while (my ($key, $value) = each %hash) { # ... }
# hash の中に目的の key が存在するかは # exists 関数を使う if (exists $hash{"key1"}) { # hash から key を削除は delete 関数 delete $hash{"key1"}; }


#Perl #hash #each #exists #delete



SN 2013/07/08 01:19:53

Archives > Perl_hash_and_functions.html





Perl_multi_sort



sort コマンドだと、日本語などのマルチバイト文字を無視してソートしてしまうので、Perl でこんなスクリプトを書いておいて、msort なんかのコマンドとして保存しておくと便利。



#! /usr/bin/perl use warnings; use strict;
my @lines = (); while (<>) { push @lines, $_; }
foreach my $line (sort @lines) { print $line; }


このやり方だと複数のファイルを読み込んだとき、全部をひとつの配列に突っ込んだ上でソートしてる。


#Perl #Shell #sort



SN 2013/07/08 01:04:13

Archives > Perl_multi_sort.html





Perl_get_http_status



Perl で URL の HTTP Status (200 OK とか 404 Not Found とか)を確認する。



#!/usr/bin/perl use strict; use warnings; use LWP; use HTTP::Status;
my $ua = LWP::UserAgent->new();
sub get_http_status { my ($url, $ua) = @_; return unless $url or $ua; my $response = $ua->head($url); my $msg = status_message($response->code); return $msg; }
my @urls = qw( http://basicwerk.com/ http://basicwerk.com/memo.cgi http://basicwerk.com/contact.html http://basicwerk.com/not_found.html);
foreach my $url (@urls) { print "$url\t"; print get_http_status($url, $ua); print "\n"; }
# 出力結果はこんな感じ # http://basicwerk.com/ OK # http://basicwerk.com/memo.cgi OK # http://basicwerk.com/contact.html OK # http://basicwerk.com/not_found.html Not Found


例えばこれを任意の URL を引数に受け取って結果を返す get_http_status.pl のようにするなら、@urls の部分を @ARGV に置き換えて、



#!/usr/bin/perl use strict; use warnings; use LWP; use HTTP::Status;
my $ua = LWP::UserAgent->new();
sub get_http_status { my ($url, $ua) = @_; return unless $url or $ua; my $response = $ua->head($url); my $msg = status_message($response->code); return $msg; }
foreach my $url (@ARGV) { print "$url\t"; print get_http_status($url, $ua); print "\n"; }



$ chmod 0755 get_http_status.pl $ get_http_status.pl http://basicwerk.com/ http://basicwerk.com/not_found.html http://basicwerk.com/ OK http://basicwerk.com/not_found.html Not Found


#Perl #LWP #HTTP::Status



SN 2013/07/06 14:53:09

Archives > Perl_get_http_status.html





20130622024241_localtime



Perl の localtime 関数メモ



# ある dir のファイル名を取得 my @files = <./dir/*>;
foreach my $file (@files) { # 各ファイルについて # $file の更新日時を取得 my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime((stat $file)[9]);
# 年と月を暦の数値に合わせる $year += 1900; $mon += 1;
my $format = "%4d/%02d/%02d %02d:%02d:%02d"; my $time_stomp = sprintf $format, $year, $mon, $mday, $hour, $min, $sec; print "$file\t$time_stomp\n"; # -> file_name YYYY/MM/DD hh:mm:ss }


#Perl



SN 2013/06/26 23:42:45

Archives > 20130622024241_localtime.html





Perl_Time_Piece



Perl 5.10 以上なら、組み込みモジュールの Time::Piece が便利。


使い方はこちらのブログが詳しく書いてあって助かりました。


Time::Piece - 日付と時刻を扱う

http://d.hatena.ne.jp/perlcodesample/20091105/1246274997


#Perl



SN 2013/06/26 23:23:37

Archives > Perl_Time_Piece.html