はてな新編集ページがかなりCoooool

みなさんはお試しになられたか。いや、もう試したよね。くわしくは、はてなダイアリーの新管理ページの公開について を参照。

簡単にプレビューできる機能がかなり便利だなー。以前まではプレビューボタン連打していたよ。JavaScriptばりばりでかっこええ。バックアップ機能もそうとうお気に入り。これは20秒ごとにバックアップしているよう。時間が経過しても、その間に編集がなければバックアップはとらないようになってる。ブラウザの画面閉じても当然のようにバックアップは残ってくれていてすてきね。

あとは、編集ツールバーのカスタマイズ等できたら最強なんだがな。あ、あと新しく出来たプレビューだとスーパーpre記法がうまくプレビューされないね。改行されていない。

第6章 入出力の基本 練習問題

何も言わずに練習問題。だって、ねむいんだもんよ。あぁ、外が明るくなってきた。

1. 出力が逆になるcatっぽいプログラムtacを作る

ともかく、

use strict;

my @lines = <>;
print reverse @lines;

と書いてみたけど、これでも生温かった。

use strict;
print reverse <>;

これで十分!reverseの引数はリストコンテキストだからなだいじょぶだわなぁ。

2. 文字列を20文字幅のカラムに右寄寄せで表示

use strict;
print '1234567890' x 4, "\n";
while(<>) {
    chomp;
    printf "%20s\n", $_;
}

C言語のprintfっぽいので楽ですよ。chompをちゃんとしないと、改行文字の分だけ文字列の位置が左にずれます。やってたらLarryに怒られました。

3. 2.のカラム幅を指定できるようにする

use strict;

print "input the number of column: ";
chomp(my $n_column = <>);

my $ruler = '1234567890';
my $n_ruler = 4;
while ($n_column > $n_ruler * 10) {
    $n_ruler += 1;
}

print $ruler x $n_ruler, "\n";
while(<>) {
    chomp;
    printf "%${n_column}s\n", $_;
}

一行目にカラムの長さを書いてそのあとに単語を一行ずつ書いたファイルの使います。%${n_column}sのブレースをはずすと$n_columnsに見えるのでダメ。

解答を参照すると、うちが、

while ($n_column > $n_ruler * 10) {
    $n_ruler += 1;
}

として得ている$n_rulerを、($n_column+9)/10で得ている。クール。