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





Gauche_Symbol_in_String



文字列補間について


例えば Perl で



my $score = 10000;
print "Your Score is ${score}!\n"; # -> Your Score is 10000!


みたいなことって良くすると思うんですが、Gauche だとこんな感じ。



(define score 10000)
;; print に複数の引数を取って (print "Your Score is " score "!") ;; -> Your Score is 10000!
;; format で (format #t "Your Score is ~a!\n" score) ;; -> Your Score is 10000!
;; 文字列補間! (print #`"Your Score is ,|score|!") ;; -> Your Score is 10000!
;; シンボルの前後が空白なら | は不要 (print #`"Your Score is ,score") ;; -> Your Score is 10000


#Gauche #Scheme #Lisp #Perl



SN 2013/06/30 02:32:00

Archives > Gauche_Symbol_in_String.html





20130628_top_image_archive



2013/06/28


本 MEMOMEM のキーワードをサマったグラフ。

HTMLタグを検索から除外。



個人的なメモ


  1. tags.pl
  2. CLISP で png 書き出し
  3. そのまま jpg で書き出す
  4. image フォルダに top.jpg として保存(CSS で 1100px に縮めてる)


参考:

Graphviz - 簡単な使い方

http://reddog.s35.xrea.com/wiki/Graphviz.html


Graphvizで日本語を使う (Graphviz version 2.26.3)

http://d.hatena.ne.jp/simply-k/20100705/1278326617


画像処理についてあれこれ - Graphvizでノードのフォントサイズを指定する

http://kyle-in-jp.blogspot.jp/2011/01/graphviz_24.html


#Graphviz #Lisp #CLISP #Perl



SN 2013/06/28 10:00:10

Archives > 20130628_top_image_archive.html