Perl › 文字コード › Unicode › コードポイント ある文字のユニコードのコードポイントを知りたい場合は、次のようにします。utf8プラグマは有効にして、ソースコードをUTF-8で保存する必要があります。 use utf8; my $str = 'あ'; # 十六進数として表示 printf "%x\n", ord($str); ord関数で文字のコードポイントを知ることができます。printf関数で%xというフォーマット指定をして16進数で表示しています。 出力結果は以下のようになり「あ」という文字のコードポイントは3042であることがわかります。 3042 Data::Dumperで簡易的に調べる Data::Dumperモジュールを使って簡易的に調べる方法もあります。Data::DumperはASCIIの範囲でない文字であれば、内部文字列を出力するときに、コードポイント
Perl › 関数 › here undef関数を使えば、未定義値を設定することができます。あるいは、引数に指定した変数の値を未定義にします。 undef undef(変数) 未定義値の設定は次のように行います。変数「$name」の値が未定義になります。 $name = "Kimoto"; $name = undef; また次のようにundef関数の引数に変数を渡しても、変数の値を未定義にすることができます。 $name = "Kimoto"; undef $name; 配列やハッシュについてもundef関数を利用することができます。 @names = undef; undef @names; %scores = undef; undef %score; 未定義値の判定 未定義値かどうかを判定するためにはdefined関数を使用することができます。定義されている場合は真を、未定義の場合は偽
正規表現で一発ですね。 しかし、ディレクトリの区切りが『/』と『\』あるので、気をつけないとなりません。 標準モジュールBasenameを使うともっと簡単に出来ますね。 だた、Basenameモジュールのfileparse関数は、リストを返しますので小カッコでスライスして、ファイル名を取得します。 use strict; use warnings; use File::Basename; my $file_path1 = 'C:\Documents and Settings\koike\hoge\fname.pl'; my $file_path2 = '/cygdrive/c/Documents and Settings/koike/hoge/fname.pl'; $file_path1 =~ /(.*\/|.*\\)(.*)$/; print $2, "\n"; $file_path2
EXCELとかDBでは、データが表形式なっていて、行と列でデータにアクセスします。 行は配列で表現し、列はハッシュで表現するのが、まぁ普通だと思います。 たとえば、以下の表の感じです。 A列B列C列D列 1行0 1 2 3 2行0 1 2 3 3行0 1 2 3 4行0 1 2 3 まず、列名をハッシュキーにして、一行分のデータをハッシュ変数に格納します。 そして、そのハッシュ変数の内容を無名ハッシュの要素とし、その無名ハッシュのリファレンスを今度は配列の要素として格納します。 すると、ハッシュの配列になり、行は配列数で表現され、列はハッシュ名で表現が出来るのです。 use strict; use warnings; my @col; my %row; for (my $j = 0; $j < 4; $j++) { # 1, 列名をハッシュキーにして一行分のデータをハッシュ変数に格納する
この実装だとものすごくの遅いです。 要素数が、少ない場合はまぁそんなに時間がかからないかなーという感じでしょうが、1000行ぐらいのCSSファイルを処理したらいつまでも終わらないでしょう。 問題の個所は以下の場所。 sub check_order { my $line = shift; my $order = 0; for (my $i = 0; $i <= $#property_order; $i++) { if ($line =~ /^\s*$property_order[$i]:/) { $order = $i; last; } } return $order; } 1つの要素番号を得るために、毎回、最大数百回のfor文(このプログラムだと454回)が実行されます。 しかもこれがsortのたびに発生するので、とんでもない回数の処理(最悪でO(n2)*O(n)?よくわからんけど)が発生
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
Perl › ファイル入出力 › here 実際にcsvファイルを読み込んで、Perlのデータ型(配列の配列)に変換して、標準出力に書き出すサンプルです。csvから配列の配列への変換はサブルーチンを使って行っています。何らかのファイルを読み込んで編集するといった場合の基本的な雛形にもなると思います。 use strict; use warnings; # 引数の処理 my $file = shift; unless ($file) { # 引数がないときは、使用方法を示して終了。 die "Usage: $0 file"; } # ファイルを解析してcsv形式のデータを配列の配列に変換。 my @recs = parse_file($file); # 出力( 2次元配列なので、forでたどる ) for my $items (@recs) { # カンマで連結して出力。 print joi
2008年06月10日16:00 カテゴリLightweight Languages perl - Lingua::CJKV::Simplify で簡単繁盛 いやあ、 クリリンノコトカー を見たらむらむら作りたくなって、作ったらあっさりできちゃったという。 /lang/perl/Lingua-CJKV-Simplify/trunk - CodeRepos::Share - Trac NAME Lingua::CJKV::Simplify - (Simplified|Traditional) Chinese Characters SYNOPSIS use Lingua::CJKV::Simplify; my $cjkv = Lingua::CJKV::Simplify->new( "Dan,\x{5F3E},\x{5F48},\x{5F39}" ); print $cjkv, $cjkv->
open は、ファイルが開けなかった場合に未定義値(偽)を返すので、それを否定(!)し、真にしてエラー取得を行います。 オーソドックス if(!open FH, ">ABC.txt") { die "open error $!"; }上記を下記のように記述することもできます。 「or」と「||」は、open 関数を評価してファイルを開く(真)ことができれば、die関数を評価せずに次の行に処理を移します。 「or」と「||」の違いは、評価の優先順位が「or」は「||」に比べて低いのです。 スマート open(FH, ">ABC.txt") or die "open error $!"; または open FH, ">ABC.txt" or die "open error $!"; または open(FH, ">ABC.txt") || die "open error $!";しかし、上記を下
@Array=();にすると各要素にアクセスする時は、未定義になります。 では、任意の一文字で初期化するには、どうしたらよいでしょうか? たとえば、10個「"0"」で初期化するには、以下の感じ。 @Array = ("0", "0", "0", "0", "0", "0", "0", "0", "0", "0");スマートに書くと @Array = ("0") x 10;掛け算記号にエックスを使うなんてオチャメ。 以下は、出来そうだけどNGです。 @Array = map {$_ . "0"} @Array;未定義と文字列は連結できないようです。ていうか、これできたら大変なことになる(謎)。 要素数が0であるため{ }内が一度も実行されないからではないでしょうか。 私もそう思います。(ご指摘受けるまでは、気づきませんでした) kitsさん、いつもご指摘ありがとうございます。
以下のようにonclickからJavaScriptの関数をコールする場合は、「'」はエスケープ(\')しないと引数として渡せない。 以下で、確認しました。ただしIE6のみ確認。 <html> <body> <form name="FM"> <input type="text" name="IP" value="ケース1:反応あり" onclick="subx('cb\'b"\\bc')"> <input type="text" name="IP" value="ケース2:反応なし" onclick="subx('cb'b"\\bc')"> <input type="text" name="IP" value="ケース3:反応なし" onclick="subx('cb'b"\\bc')"> </form> <script> fun
この利用規約は、株式会社はてな(以下「当社」)が本サイト上で提供する全てのサービス(以下「本サービス」)における利用条件を定めるものです。ユーザーのみなさま(以下「ユーザー」)には、本規約に従い本サービスをご利用いただきます。 一例としてはてなの利用規約から引用させてもらったが、"(以下「当社」)"等の表現において"当社"という文字に"株式会社はてな"を結び付けてる。つまり、"当社"という文字は"株式会社はてな"を定義していると言える。そうだとすれば、この場合の"当社"は dfn 要素でマークアップすべきではないか。と、思った。どうなんだろう。 どうでもいいが、私は dfn 要素を「どふんようそ」と呼んでいる。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く