pixyzehn blog

iPhone App, Mac App, Programming, Web service, Tool, Evernote, etc

はてなでも同じみのPerlをやってみました(超初級編)

f:id:inagex:20131120105339p:plain


なぜPerlを勉強し始めようとしたのかというと単純に興味をもったからです。




僕やはてながPerlを選ぶ理由 - naoyaのはてなダイアリー僕やはてながPerlを選ぶ理由 - naoyaのはてなダイアリーはてなブックマーク - 僕やはてながPerlを選ぶ理由 - naoyaのはてなダイアリー


Pythonとどっちにするか迷ったのですが、自分がYAPCに参加したこともあり、日本のPerlのコミュニティなどが盛んだと感じたので最終的にPerlにしようと思いました。



世界ではPython > Perlのようですが、日本ではPython < Perl のようです。


エンジニアのお祭り、YAPC::Asiaに初参加してきました - 理系大学生のwebメモエンジニアのお祭り、YAPC::Asiaに初参加してきました - 理系大学生のwebメモはてなブックマーク - エンジニアのお祭り、YAPC::Asiaに初参加してきました - 理系大学生のwebメモ


そこでまずPerlでは定番の通称リャマ本をやろうかと思います。


選ぶにあたってはこちらを参考にしました。


プログラミング初心者にオススメのPerl本 - Islands in the byte streamプログラミング初心者にオススメのPerl本 - Islands in the byte streamはてなブックマーク - プログラミング初心者にオススメのPerl本 - Islands in the byte stream


ではさっそくPerlを動かしてみましょう。

perl -v

で入っているバージョンを確認します。

This is perl 5, version 16, subversion 2 (v5.16.2) built for darwin-thread-multi-2level
(with 3 registered patches, see perl -V for more detail)

Copyright 1987-2012, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

僕のは上記のバージョンが入っていました。


リャマ本に乗っ取ってやっていきます。

初めてのPerl 第6版

初めてのPerl 第6版



gist7556520


1行目ではPerlの場所を指定しています。ほとんどはこの通りで上手くいきますが、場合によっては各々変更する必要があります。
"-w"を追加することによって、警告メッセージを表示するようにしています。

この1行目は毎回書くものなので、TextExpanderに登録しました。

先ほどのgistを拡張子なしで保存し、

perl ファイル名

で実行できます。

=over 8

=item atan2 Y,X
ATAN2 ARCTANGENT TAN TANGENT

=for Pod::Functions arctangent of Y/X in the range -PI to PI

Returns the arctangent of Y/X in the range -PI to PI.

For the tangent operation, you may use the MATH::TRIG::TAN
function, or use the familiar relation:

sub tan { sin($_[0]) / cos($_[0]) }

The return value for ATAN2(0,0) is implementation-defined; consult
your atan2(3) manpage for more information.

Portability issues: PERLPORT/ATAN2.

=back

実行すると上記が出力されます。

これは本来の
perldoc -u -f atan2というPerlのドキュメンの一部を出力コマンドを変数に格納して、加工しているものです。どういう加工をしているのかは元の出力を見れば一目瞭然です。

では
perldoc -u -f atan2
と確かめてみると…

=over 8

=item atan2 Y,X
X X X X

=for Pod::Functions arctangent of Y/X in the range -PI to PI

Returns the arctangent of Y/X in the range -PI to PI.

For the tangent operation, you may use the C
function, or use the familiar relation:

sub tan { sin($_[0]) / cos($_[0]) }

The return value for C is implementation-defined; consult
your atan2(3) manpage for more information.

Portability issues: L.

=back

基本的な文言は先ほどと同じですが、<で囲まれているところがなくなり、中身が大文字になってます。


文字列を入力し、それを指定した数だけ出力するプログラムはこちらです。



gist7556775


chomp()は改行は削除します。


まだまだ始めたばかりですが、これからもっとPerlの良さを理解していきたいと思いましたとさ。