2011.8.9  

Mac OSXでPerlの環境を整えるのエントリーをすこし見やすくしました  

ここは普段あまりプログラミングの話をしていないブログなのですが、2008年ごろ気合を入れて書いたPerlのエントリーがあります。

知り合いしか読んでないはずなのに、ブクマ数と閲覧数が一番な Mac OSXでPerlの環境を整える。- CPANモジュールのインストールまでのエントリーです。

改行入らなさすぎてカオスで読みづらい状態だったので、ずっと申し訳なく思っていました。

それを今回、プラグイン入れたりソースコードの箇所も読みやすくスタイルを変更して一気に直しました。

以前から気になる文言・スタイルも定期的に見直し、かなり追記と修正をし続けているものでもあります。

より多くのPerlに興味を持っている方に読んで頂いて、最初のムダなつまづきといいますか、不安とかハマりポイントをなくしてもらえたらいいなーという目的で細々とアップデートしています。

 

よかったら一度ご覧になったことがある方も軽くチェックしてくださるとうれしいです。

Heart Beat » Mac OSXでPerlの環境を整える。- CPANモジュールのインストールまで

 

写真は先日、miyagawaさんから頂いた韓国のPerl workshopのTシャツです。ありがとうございます。

あとdotCloud Tシャツって非売品なんでしょうか?オフィシャルに出たら即買います><

 

 

2011.2.24  

WEB+DB PRESS Vol.61のPerl Hackers Hub【第7回】「新人さんのための仕事で使えるPerl基礎知識」を寄稿しました  

注意:内容ははてダとほぼ重複してます。

WEB+DB PRESS Vol.61 / Perl Hacker Hub

2011/2/24より技術評論社さんから発売される、WEB+DB PRESS Vol.61のPerlリレー連載のPerl Hackers Hubに寄稿しました。

ざっくり内容

前半はPerlの世界でデファクトスタンダーとになりつつある最新の環境構築について、cpanm + perlbrewを紹介させて頂きました。

後半はPerlをはじめて今まで、個人的に苦手だった箇所・つまづきやすい部分などを中心に書きました。

どうしてこのテーマだったのか

きっと同じようにつまずいている方や苦手意識を持っている方は本当に沢山いらっしゃると思いますし、実際によく質問されたりする箇所でもあります。

この連載自体が錚々たる顔ぶれの中、恐れ多くも内容について真剣に考えた結果、オリジナリティあふれる独自の内容になったように思います。

ぜひこれからPerlをはじめたいと思われている方や、今も勉強されている方などに読んで頂きたいです!!

主な内容は以下の通りです 😀

  • 今どきのCPAN環境構築術
    • cpanコマンド
      • cpanコマンドの確認
      • cpanコマンドの使い方
    • cpanmコマンド
      • cpanmコマンドのインストール
      • cpanmコマンドの使い方
      • 新たにCPANの環境を移行する
      • 環境変数の設定
    • cpan-outdatedを使い全モジュールのアップデートを行う
    • perlbrewコマンド
      • perlbrewコマンドのインストール
      • perlbrewコマンドの使い方
      • 環境変数の設定
  • 変数
    • use strictとuse warnings
      • use strict
      • use warnings
    • スコープ制御
      • レキシカルスコープ宣言とグローバル宣言
      • my
      • local
      • our
    • よく使われる特殊変数
      • $_
      • @_
      • $@
      • 擬似シグナル
  • リファレンス/デリファレンス
    • リファレンス
    • デリファレンス
    • 配列
      • リファレンス
      • デリファレンス
      • @演算子を使ったデリファレンス
      • リファレンスの変数をそのまま表示する
    • ハッシュ
      • リファレンス
      • デリファレンス
      • %演算子を使ったデリファレンス
    • サブルーチン
    • 複雑なデータ構造の取り扱い
      • 配列の中に配列リファレンスを入れる
      • 配列の中にハッシュのリファレンスを入れる
      • 配列のハッシュにアクセス
      • ハッシュのハッシュにアクセス
    • リファレンスの型を調べる
    • Perl 5.14からデリファレンスが変わる!!
    • リファレンスは怖くない
  • おわりに

さいごに

編集長をはじめ、編集部の方々、牧さん、大沢さん、ご指摘やアドバイス等ありがとうございます><

あと執筆ではないですが、3月と4月頃にも別件で良い報告ができるかと思います。

今後ともよろしくお願い致します。

Twitterハッシュタグは#wdpressです!

Amazon

WEB+DB PRESS Vol.61 - 4774145440

WEB+DB PRESS Vol.61

技術評論社 (2011-02-24)
rating:  - WEB+DB PRESS Vol.61
price: ¥ 1,554
posted with Amazoon mini icon at 2011.02.24
2008.7.11  

それText::Vimcolorでできるよ  

以前のsyntaxhighlighterのPerlハラスメントについてのエントリーを書きましたが、

ZIGOROu氏よりブクマコメントを頂いて、速攻試してみました。ありがとうございます。


$ text-vimcolor --format html --full-page sample.pl

超便利!

このモジュール名は以前調べた時に名前だけチラッと出てきてたんですが、こういう使い方だったんですね。

はてなが採用してるコードのシンタックカラーはText::Vimcolorベースだし実績もあります。

こんなvimcolorのサイトもすごい便利な気がする。

http://vimcolor.spiritloose.net/

今後はHTMLで別ページにするか、ブログ中に貼付けるか、プラグインいじるかしたいと思います。

****************************

余談:

VimM (Vim Movement) 第一回が7/20に開催されるようです。

定員がいっぱいのようで、非常に参加したかったです><

私も大きい会議室を借りて勉強会したいなぁ。

需要があれば流行のハッカソン的な事も全然できそう。

なくても会社とかテキトーに身内でできるかなww

同じようにPerlやRuby、ASとかプログラム勉強してる人で勉強会したいけど場所ないお!って人いないですかね。

私の勤めてる会社だったら全然人数もいけるし、場所的にも都内でも交通の便はいい方だと思う。

ぜひお気軽にご連絡頂ければと思います。

VimMのように勉強会するぞ!っていう気持ちや行動ってすばらしいと思います。

自分自身も成長していく過程のひとつとして、モチベーションって大事だなって思っています。

VimM (Vim Movement)

 http://wiki.livedoor.jp/biowithit/d/%A5%C8%A5%C3%A5%D7%A5%DA%A1%BC%A5%B8

2008.7.3  

[備忘録]WWW::MechanizeでのBasic認証の例  

すごく簡単にログインできるし、LWP::UserAgentのサブクラスなのでcredentialsも同じように使える。

メモメモ。

[sourcecode language=”perl”]
#!usr/bin/perl
use strict;
use utf8;
use warnings;
use Encode;
use WWW::Mechanize;
my $mech = new WWW::Mechanize;
my $user_name = "ユーザ名";
my $password = "パスワード";
$mech->credentials(‘ドメイン:ポート番号’,’Auth Test’,$user_name,$password );
$mech->get("表示したいURL");
print $mech->content();
[/sourcecode]

WWW::Mechanize 日本語のリファレンス的なもの
http://digit.que.ne.jp/work/product/document/perldoc/WWW-Mechanize-1.02/Mechanize.html#name

WWW::Mechanize 日本語のリファレンス的なもの その2
http://digit.que.ne.jp/work/wiki.cgi?Perl%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%2fWWW%3a%3aMechanize

WWW::Mechanize 日本語のサンプルプログラム perldoc
http://perldoc.jp/docs/modules/WWW-Mechanize-1.02/Examples.pod

Perl] WWW::MechanizeでBasic/Digest認証で

保護されたページを読む
http://d.hatena.ne.jp/teamikl/20040712

WWW::Mechanize 覚書
http://amt.ty.land.to/OpenNote/WWWMechanize.html

Bot作成講座2 – Perlでさくっとスパムブログを作ってみる  – 後ろを見ろ、後ろを!
http://d.hatena.ne.jp/heilig_zwei/20080503/1209802766

gooブックマークにブックマークするPerlスクリプト - M.C.P.C.
http://blog.dtpwiki.jp/dtp/2007/10/gooperl_a537.html

楽天アフィリエイトの確定レポートを自動取得してタブ区切りテキストに出すスクリプト  - Web屋のネタ帳
http://neta.ywcafe.net/000721.html

perl LWP アップロード Basicn認証  – OZの部屋
http://blog.goo.ne.jp/ozoz-goo/e/d57d5276211d4e893e9203e4257dac50

2008.6.30  

Perlをはじめて1週間目の頃の課題を公開 – calc.pl  

今見たら恥ずかしくて死にそうなのですが、ファイルを整理していたら見つけたのでうp。

1週間の間、毎朝5分以内でFIzzBuzz、JSONの読み込みのプログラムをそれぞれ書いていました。

当時はvimを使ったばかりで、当時の上司に「無理に使うのは大変だったら、テキストエディタでもいいよ」と言われ

半分意地になって「いえ、vimを早く覚えます!!」 と言って教えてもらっていたのが印象に残っています。

while(my $line = <>){ で、キーボードで入力された1行ずつを$lineに代入しループさせている。

<>が標準入力のSTDIN(キーボード入力)を省略していることは完成してから知ったと思う。

・サブルーチン作成時のルール、作り方もこの時初めて知ったと思う。

1回目の入力時・・・数字

2回目の入力時・・・演算子(+,-など)

3 回目の入力時・・・数字

で結果が出るようになっています。

use Smart::Comments は必要に応じて使ってください。

calc.pl

[sourcecode language=’php’]
#!/usr/bin/perl
use strict;
use warnings;

my $num1 = undef;
my $op = undef;
my $num2 = undef;

while(my $line = <>){
chomp $line;

if(not defined $num1){
if(not is_num($line)){
print STDERR “invalid left value($line)”;
next;
}
$num1 = $line;
} elsif(not defined $op){
if(not is_op($line)){
print STDERR “invalid operator value($line)”;
next;
}
$op = $line;
} elsif(not defined $num2){
if(not is_num($line)){
print STDERR “invalid right value($line)”;
next;
}
$num2 = $line;
print eval “$num1$op$num2\n”;

$num1 = undef;
$op = undef;
$num2 = undef;

} else {
die ‘invalid command.’ if(0);
}

last if ($line eq ‘exit’ or $line eq ‘EXIT’);
}
sub is_num{
my ($val) = @_;
## $val
return $val =~ m{\d+};
}

sub is_op{
my ($val) = @_;
## $val
return $val =~ m{\+|-|\*|/};
}
[/sourcecode]

2008.5.9  

かなりの勢いで以前のMacOSXでPerlの環境を整えるの記事を追記しました  

アクセス数があるのに適当な事書いてたので、以前のMacOSXでPerlの環境を整えるの記事を追記しました。

もはや追記というよりか新しいエントリーにした方がいいんじゃないかという勢いです。

情報がどんどん増えて行くにつれ、本当に欲しい情報が検索してもなかなか出てこない事があります。

とくに私自身、perlでググったときの環境設定等の情報量がまだまだ少ない気がします。

ハードルが高い、初心者向けではないと言われる人もよくいますし、実際そうだと思います。

いろんな言語を勉強する人に対して、「ちゃんと腰を据えたら」という人もいれば

「たくさんの言語にふれたほうがいいよ」という人もいます。

これは基礎を学び概念を理解した上で、ある程度の共通部分を見いだせるようになれるんだったら

どんな方法だって私はいいと思います。人間ですから相性が合う合わないというものもきっとあります。

話が脱線しましたが、なにが言いたいかというと、perlのハードルが高いのではなくて、

perlをしている一部の人たちのイメージがネット上ではこわい、とか「あの人はすごすぎるから敵わないや」とかいった

意識的なハードルが高いのではないか?と思っています。

決してイメージが悪い訳ではなく、もっと意識的なハードルは下げる事ができるのではないかということです。

実はもっと世間には、Perlに興味がある人は意外と多いんじゃないかな?と思います。

私はどんどんプログラムの敷居を低くするの事が、先人の役割だと思っています。

ツールもしかり、勉強会等のコミュニティにしてもすべて合わせて「雰囲気 、イメージ」なので、

これから少しでもよいと思うことは行動していきたいと思います。

技術的にすごい人は本当にすごいですし、有名な人はすっごい有名です。

だからといって態度を変えるとかそんな事はしたくないし、きっと逆の立場でもされたくないと思います。

実際に、みなさんお会いするととても気さくで素敵な人ばかりです。

なんでも前向きにがんばっている人が好きです。どの職種でもどの言語でも。

批判よりもその人のいいところ、長所となる部分にフォーカスしたいです。

perlとたくさん言いましたが、プログラムに興味のある人に対して私が何をできるのか

みんなで協力すれば何ができるのかをもっと考えて行きたいと思います。

少しずつアウトプットはもちろんのこと、積極的に行動していきたいと思います。

2008.4.4  

Mac OSXでPerlの環境を整える。- CPANモジュールのインストールまで  

*2010/08/12追記

まずはMacportsのインストール

PerlのインストールにもMacportsを使うと/opt/local以下にインストールしてくれるのでオススメします。
MacのデフォルトのPerlのインストールディレクトリを汚さないですし、アンインストールやアップグレードなどのバージョン管理もできるパッケージ管理ツールです。

MacPortsとは?

MacPorts(旧名DarwinPorts)というのはパッケージ管理ツールで、UNIX向けのオープンソースソフトウェアをダウンロード、configure、make、インストール、そのパッケージ使用するのに必要な他のパッケージも一緒にインストールなど面倒な作業をすべて代わりにやってくれる便利なソフト。
source: Macports – Macの手書き説明書

事前にXcodeTools、X11をMacに付属しているインストールDiscからインストールが必要です。

MacPortsをインストール

http://distfiles.macports.org/MacPorts/
から最新版のLeopardまたはSnowLeopard版のdmgをダウンロードしインストール。

シェルでmacportsのパスを通す(環境変数を追加)

~/.bashrcもしくは~/.bash_profileにMacPortsのパスを通すための環境変数を追加します。

[sourcecode language=”bash” wraplines=”false” gutter=”false”]
export PATH=/opt/local/bin:/opt/local/sbin/:$PATH
export MANPATH=/opt/local/man:$MANPATH
[/sourcecode]

sourceコマンドで実行します。

[sourcecode language=”bash” wraplines=”false” gutter=”false”]
$ source ~/.bashrc
[/sourcecode]

MacPorts自身のアップデートとportsのデータベース(Portfile/patch)を更新

[sourcecode language=”text” wraplines=”false” gutter=”false”]
$ sudo port -d selfupdate
$ sudo port -d sync
[/sourcecode]

Perlのインストール

macportsでPerlのついでにgitとかsubversionとかvimなど便利なツールもインストールしておくと後々管理しやすくて楽です。

なにをインストールすればいいか悩んだらBeginning OS X 10.6/アプリ導入編 拾遺 – Beginning OS Xを見ればだいたいわかります。

[sourcecode language=”text” wraplines=”false” gutter=”false”]
$ sudo port install wget tree proctools git-core
$ sudo port install subversion
$ sudo port install nkf
$ sudo port install perl5
$ sudo port install vim
$ sudo port install emacs
[/sourcecode]

Perlの実行パスの確認

macports用にパスが通せて(環境変数が設定できる)、macportsでPerlが無事にインストールされたら早速Perlの実行パスを確認します。
whichコマンドを使ってperlの実行パスを確認することができます。

[sourcecode language=”text” wraplines=”false” gutter=”false”]
$ which perl
/opt/local/bin/perl
[/sourcecode]

CPANシェルを呼び出す

cpanシェルを使うと豊富なライブラリ群のCPANモジュールを自由にインストールすることができます。
ダウンロードし、展開し、make installや make testまで自動でしてくれます。

初期設定後は、以下のコマンドのどちらかを打つだけでCPANシェルを呼び出すことができます。

[sourcecode language=”text” wraplines=”false” gutter=”false”]
$ sudo cpan
$ sudo perl -MCPAN -e shell
[/sourcecode]

実行後、cpan>と表示されれば無事にCPANシェルが立ち上がっています。
これでCPANモジュールをインストールすることができます。

[sourcecode language=”text” wraplines=”false” gutter=”false”]
$ sudo cpan
Password:
Terminal does not support AddHistory.
cpan shell — CPAN exploration and modules installation (v1.7602)
ReadLine support available (try ‘install Bundle::CPAN’)
cpan>
[/sourcecode]

インストールディレクトリの確認 (必要であれば)

まずは、以下のシェルでインストールディレクトリを知る必要があります。perl -Vでも環境変数や細かいインストール時の情報が確認できます。
左のパスから優先的にインストールされます。

[sourcecode language=”text” wraplines=”false” gutter=”false”]
$ perl -e ‘print "@INC"’
/opt/local/lib/perl5/5.8.8/darwin-2level /opt/local/lib/perl5/5.8.8 /opt/local/lib/perl5/site_perl/5.8.8/darwin-2level /opt/local/lib/perl5/site_perl/5.8.8 /opt/local/lib/perl5/site_perl /opt/local/lib/perl5/vendor_perl/5.8.8/darwin-2level /opt/local/lib/perl5/vendor_perl/5.8.8 /opt/local/lib/perl5/vendor_perl
[/sourcecode]

もしくはperl -V オプションで詳細がごそっと確認できます。

[sourcecode language=”text” wraplines=”false” gutter=”false”]
$ perl -V
Summary of my perl5 (revision 5 version 8 subversion 9) configuration:
Platform:
osname=darwin, osvers=10.3.2, archname=darwin-2level
(以下省略)
[/sourcecode]

CPANモジュールのインストール

cpanシェルを実行した際に表示されている通り、 cpanシェルでinstall Bundle::CPANとコマンドを打ってみましょう。

早速 Bundle::CPANモジュールがインストールされ、readlineという上カーソルキーを押すとコマンドの履歴が呼び出せるようになります。

[sourcecode language=”text” wraplines=”false” gutter=”false”]
cpan> install モジュール名
[/sourcecode]

ここまででだいたいCPANモジュールのインストールは完了です!

cpan>シェルを終了したい場合

[sourcecode language=”text” wraplines=”false” gutter=”false”]
cpan> quit
cpan> q
[/sourcecode]

のいずれかで終了できます。

よくある質問

CPANモジュールがインストールされたかどうか確認したい

cpanモジュールがインストールされたどうかは、cpanシェル時の “i /モジュールを名/” コマンドか、”perldoc [モジュール名] “のコマンドで調べることが可能です。

[sourcecode language=”text” wraplines=”false” gutter=”false”]
cpan> i /モジュール名/
[/sourcecode]

例:

[sourcecode language=”text” wraplines=”false” gutter=”false”]
cpan> i /Web::Scraper/
Module Web::Scraper (M/MI/MIYAGAWA/Web-Scraper-0.24.tar.gz)
Module Web::Scraper::Config (D/DM/DMAKI/Web-Scraper-Config-0.01.tar.gz)
Module Web::Scraper::Filter (M/MI/MIYAGAWA/Web-Scraper-0.24.tar.gz)
3 items found
[/sourcecode]

cpanモジュールがインストールされたパスを知るには

以下のコマンドでできます。

[sourcecode language=”text” wraplines=”false” gutter=”false”]
$ perldoc -ml モジュール名
[/sourcecode]

参考リンク:CPAN モジュールがインスコされたパスを調べる時 – にぽたん研究所

手動でインストールを行いたい場合 (CPANシェルをあえて使わない場合)

初期の環境のままではCPANモジュールのmakeができないので、make install時にエラーになります。
Mac OSX Leopard付属のインストールディスクNo.2から XcodeTools > XcodeTools.mpkg をダブルクリックしてインストール。
先ほどの@INCパスにあるディレクトリ内へCPANモジュールをコピーし、makeします。

例:

[sourcecode language=”text” wraplines=”false” gutter=”false”]
$ cp -r /ダウンロードディレクトリ /opt/local/lib/perl5/5.8.8
$ sudo perl Makefile.pm
$ sudo make install
$ sudo make test
[/sourcecode]

モジュールを入手してインストールする方法 – Perlの小技が非常に参考になりました。

※cpanシェルがエラーになって起動できない場合の対処法

CPANシェルのプロセスを立ち上げたまま、別のCPANシェルを立ち上げようとすると下記のようなエラーメッセージがでてきます。

[sourcecode language=”text” wraplines=”false” gutter=”false”]
Terminal does not support AddHistory.
CPAN.pm panic: Lockfile /var/root/.cpan/.lock
reports other host EM60-254-232-36.pool.e-mobile.ne.jp and other process 14521.
Cannot proceed.
[/sourcecode]

これは/var/root/.cpan/.lockにロックファイルが残っている為に起きているエラーです。
そんな時は以下のsudo権限でrmコマンドを使いロックファイルを削除してください。

[sourcecode language=”text” wraplines=”false” gutter=”false”]
$ sudo rm /var/root/.cpan/.lock
[/sourcecode]

FireFoxにCPANモジュール検索バーの追加

CPANを素早く検索できるよう、FireFoxの検索バーにCPANモジュール検索を追加します。
私はCPAN – Modulesだけを登録しています。 以下のリンクからできます。
http://mycroft.mozdev.org/download.html?name=CPAN&sherlock=yes&opensearch=yes&submitform=Search

その他Perl関連で参考になったサイト

その他ご意見や情報が足りない、間違ってる等ツッコミがありましたらacotie.acotie[at]gmail.comまでメールを頂けると嬉しいです。

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
(c) 2020 Heart Beat | powered by WordPress with Barecity