ラベル perl の投稿を表示しています。 すべての投稿を表示
ラベル perl の投稿を表示しています。 すべての投稿を表示

2009年10月9日金曜日

perlでFizzBuzz

ワンライナーって普段書かないので興味本位で調べてみました。
今回の素材はFizzBuzzの例。

FizzBuzzは、1から順に整数をカウントしていって、3の倍数のとき"Fizz"、5の倍数のとき"Buzz"、15の倍数のとき"FizzBuzz"と出力するものです。

上から順にコードが短いものを列挙します。
※書式の都合上、改行あり。


 perl -e 'print $_ % 15 == 0 ? "FizzBuzz\n"
: $_ % 5 == 0 ? "Buzz\n"
: $_ % 3 == 0 ? "Fizz\n"
: "$_\n" for 1 .. 100'


 perl -e 'for(1..100){print;print"\b\b\bFizz"
if$_%3==0;print"\b\b\bBuzz"if$_%5==0;print"\n"}'


 perl -le 'print $_%15?$_%5?$_%3?$_
:Fizz:Buzz:FizzBuzz for(1..100)'


 perl -le 'print(($_%3?"":Fizz).($_%5?"":Buzz)or$_)for 1..100'


最下段のが最短とのことでした。。
いやはや、perlはフリー&カオス。

2009年10月8日木曜日

perl/processing で client/server

下記構成で試してみました。
TCP経由でのデータ連携のコードです。

クライアント処理: Perl
サーバ処理: Processing
port番号: 12345


【クライアント】
#!/usr/bin/perl
use strict;
use IO::Socket;

my $sock = new IO::Socket::INET(PeerAddr=>'localhost',
 PeerPort=> 12345,
 Proto=>'tcp');

die "IO::Socket : $!" unless $sock;

$sock -> print("hello world\n"); # 送信用の文字列を用意
print $sock -> getline; # サーバに文字列を送信

close($sock);



【サーバ】
/***
TCP:12345 portで受信したStringをprintlnする
Compiler: Proce55ing ver1.0.1 later
Date: 2009/10/08
***/
import processing.net.*;

int port = 12345;
Server server;
String str;

void setup(){
 size(200,200);
 server = new Server(this, port);
}

void draw(){
 Client client = server.available();
 
 /* Clientがある場合 */
 if(client != null){
  if((str=client.readString()) != null){ // 文字列を送ってきているなら受信
  print(str);
  client.write("echo: "+str); // Clientに送り返す
   }
 }
}

/* Clientが接続した時 */
void serverEvent(Server s, Client c){
println("Client connect - IP:"+c.ip()); // IPアドレス表示
}



サーバプログラム実行し、サーバ起動中にクライアントプログラムを実行すれば、サーバがリスポンスを返します。

2008年8月29日金曜日

Linguaでキーワード抽出試し打ち

Lingua::JA::Summarizeでキーワード抽出を試行。(nomoさんのnemolog同名記事)

下記の足りないモジュールはPPMからインストール。
  • HTTP::GHTTP
  • HTML::Strip

次に、cpanから Lingua::JA::Summarize をインストール


Lingua-JA-Summarize-0.08/lib/Lingua/
Lingua-JA-Summarize-0.08/lib/Lingua/JA/
Lingua-JA-Summarize-0.08/lib/Lingua/JA/Summarize/
Lingua-JA-Summarize-0.08/lib/Lingua/JA/Summarize/Meca
Lingua-JA-Summarize-0.08/lib/Lingua/JA/Summarize.pm

‥でインストール完了。

参照記事には21行目に{}のsyntax errorがあるので補って、再試行。



Mecabがバッチファイルとして認識されてないとな。。

ということで、環境変数pathにC:\Program Files\MeCab\bin追記しておけばOK。

C:\Users\hoge>mecab -v
バージョン確認
mecab of 0.96


XAMPPとMecabの設定は後述のリンク先(5×2.info 内記事)。
Mecab用の辞書作成法なども。


ひとまずここはエンコード優先(nemolog記事のソースの該当部なら)
mecab_charset => 'uft8' を
mecab_charset => 'shiftjis' に修正すればOK。


[下記ソースの一部]

#文字コードとか調整、デフォルトの単語の重み設定も
my $s = Lingua::JA::Summarize->new({charset => 'utf8',
mecab_charset => 'shiftjis',
default_cost => 1.5,
singlechar_factor => 0.2
});

#ここで重みつけ
$s->analyze($clean_text);
my @keywords = $s->keywords({threshold => 5,
minwords => 10,
maxwords => 15


以上のような形で、キーワードが設定した情報に沿って列挙される。
次は辞書作りに取り組みたい。。

2008年5月4日日曜日

洋書版「Catalyst」 by Jonathan Rockway のサンプルコード

下記URL先の「2008-04-22」 づけBlogからダウンロードOK。

http://blog.jrock.us/


収録サンプルは

・chapter2(Creating a Catalyst Applications)
→MyApp

・chapter3(Building a Real Application)
→AdressBook

・chapter4(Expanding the Application)
→AdressBook

・chapter5(Building a More Advanced Application)
→ChatStat

・chapter6(Building your own model)
→AdressBook
→Blog

・chapter7(Hot Web Topics)
→AdressBook
→MyApp

・chapter8(Testing)
→AdressBook
→ChatStat



2008年4月30日水曜日

関数型言語とPerl 下調べ編

関数型言語というものは、Lispやその派生言語を含めるとたくさん存在しているのがわかった。

以前取り上げたR言語は、プログラムの勉強をJavaから入った自分としては手続き型と似てる面も見られたので良いなーと感じていたが、、それについて言及してくれてる先達がいました。

http://d.hatena.ne.jp/wasisan/20080311/p1

 ・Schemeのような静的スコープが統計計算に適していること
 ・リスト処理言語としてのRはgood とのこと


「言語の用途で適不適が決まる」「種(改め言語)の多様性と繁栄衰亡」など考えるのは面白い。


そういえば、"Perl6 " はHaskell の上に実装されたPugs(?) がベースになるとか何とか。。

→Andrey Tang さん
YAPC2006 概要Haskell プレゼン(←こちらはぜひ)

(ただこのプレゼン見てたら Jifty もいいかもと。。)


Perl5 と Perl6 の違いはやはり先達++。



あとおまけで、自分が Perl にハマった理由は、(勘違いもあるかもだけど)Unix と C が仲違いしているのをつなぐために生まれたところ。いやはや子は鎹。。

それと、これは Unix の思想なのかもしれないけど、単位と単位を結ぶ、上書きする、それでも動く~な発想が油絵具に似てると感じたところからでした。。

perl 学習方針メモ 学習開始8か月くらい経過編

これからPerl学習進めていく上で気になるエントリーがあったのでここに記録。


trombik さんのブログ タイトル:「Perl初心者はどうやって勉強したらいいんですかね」
http://trombik.mine.nu/~cherry/w/index.php/2008/02/05/1134/my-perl-history

fbis さんのブログ「Unknown::Programming 」 タイトル:「新人教育」から。
http://d.hatena.ne.jp/fbis/20060504/1146736766


いずれも非常に参考になるので、今後の学習項目として転記。

* foreach文
* ハッシュ
* 配列操作関数push,shiftなど
* packageについて
* グローバル(パッケージ)変数とレキシカル変数の違い
* インクルードパスとパッケージの関係
* 関数とメソッド
* Perlでのオブジェクト指向プログラミング
* bless関数
* リファレンス
* strictプラグマ
* 正規表現
* リストコンテキスト、スカラコンテキスト
* クロージャ
* myとlocal(とour)の違い
* requireとuse(とdo)の違い
* 無名ハッシュ、無名配列、無名サブルーチン
* シンボリックリファレンス
* 動的コンパイル
* 例外処理
* シンボルテーブル
* 型グロブ
* プロトタイプ関数
* BEGIN,END
* DESTROY
* AUTOLOAD
* CORE
* UNIVERSAL
* isa,can
* tie変数
* overload
* $VERSION
* 継承
* POD
* 最後の1;


以下さらに引用で。

で、これを踏まえたうえでCPANのモジュールとかの勉強もしていかないといけないし。

命名規約とかコーディング規約とかも入ってくるとやっぱPerlって新人が勉強するにはハードル高いかもね。

Perlをメインで使ってる会社とかこの辺の新人教育とかどうしてんだろう。

うちでは基本規約を読ませてあがってきたソースは全てレビュー。で、後は個別で各項目に対する課題をやってもらう、例えば明日までにmyとlocalの違いについて調べてこいとか。

とのことです。

本当に身についたかは教える立ち場に立ってみてわかるというので、今年教育されたヒトが翌年以降の教育担当になる~みたいな制度があればいいな、と。

VNC使った授業なら、教師1対生徒複数名(6名くらいでもつまづいたところの指導までならいけそう)が便利かな(教師複数なら多対多のVNCThumbnailViewer)。。

レビューが大変なのは、、、Moodle入れて、オンライン上で教材的に処理とか。


他の perl 学習の素材として、

antipop 「Perlの学習コストが大幅に軽減するスゴイ方法」
http://d.hatena.ne.jp/antipop/20060505/1146822604

がはてブに上がってました。


Charsbar さんのブログからは
http://d.hatena.ne.jp/charsbar/20060505/1146801072

困ったらsearch.cpan.orgに行けとか、perldocしろとか、モジュールはmake (test|install)できるように書けとかいうあたりがPerl固有の学習コスト

選択肢が多すぎて困るとかいう側面もあるけれど、まじめに勉強しようと思えば思うほどPerlの学習コストは下がる

宮川さんの記録にも「perldoc -m (module名)」で勉強‥とあったので、ここでメモ。。

最新のPerl時流など追うにせよ、まずは足元固めたい。

カンファレンスとか出る→聞く→帰宅後コード書いて尾ひれつけられるレベルになりたい。
cf: YAPC::ASIA2008

2008年4月25日金曜日

Mech::Googleサーチ 試し打ち

下記参照
http://d.hatena.ne.jp/hakobe932/20070131/1170266398
参照先のコードでは気をつけないと、"syntax error" "requires explicit package name" とか出てしまう。
「;」 と「my」の欠けは注意。

あと、コード末尾のエンコードはutf-8のままならエンコード/デコード処理は不要。。
そのまま実行すると文字化けします。
下は修正後。。


#!/usr/bin/perl
use strict;
use warnings;
#http://d.hatena.ne.jp/hakobe932/20070131/1170266398
use WWW::Mechanize;
use HTML::TreeBuilder::XPath;
use Encode;
use Readonly;

sub say {print @_, "\n";}

my $mesh = WWW::Mechanize->new();

# Googleにアクセス
$mesh->get('http://www.google.com');

# 検索フォームにPerlを入力してサブミット
my $res = $mesh->submit_form(
fields => {
q => 'Perl',
}
) or die 'submitting failed';

# レスポンスを取り出してパース
my $tree= HTML::TreeBuilder::XPath->new();
$tree->parse($res->content()) or die "parsing failed";

# 結果をXPathで取り出して表示
my @nodes = $tree->findnodes( '/html/body//div[@class="g"]/a[@class="l"]' );
for my $node (@nodes) {
say $node->as_text, ' (', $node->attr('href'), ')';
}


コードここまで。

出力結果は下記。

Perl - Wikipedia (http://ja.wikipedia.org/wiki/Perl)
Perl基礎入門 (http://www.kent-web.com/perl/)
とほほのperl入門 (http://www.tohoho-web.com/wwwperl.htm)
The Perl Directory - perl.org (http://www.perl.org/)
Perl講座[入門からデータベース連携なども] (http://www.site-cooler.com/kwl/perl/
)
Amazon.co.jp: Perl - プログラミング: 本 (http://www.amazon.co.jp/Perl-%E3%83%97%
E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E3%82%B3%E3%83%B3%E3%83%9
4%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BB%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%
8D%E3%83%83%E3%83%88-%E5%92%8C%E6%9B%B8/b?ie=UTF8&node=515826)
Perl.com: The Source for Perl -- perl development, conferences (http://www.perl.
com/)
Perl講座 [Smart] (http://www.rfs.jp/sb/perl/)
Perlとは 【Practical Extraction and Report Language】 - 意味・解説 ... (http://e
-words.jp/w/Perl.html)
Perlメモ (http://www.din.or.jp/~ohzaki/perl.htm)

以上、取れました。。

2008年3月30日日曜日

CGI::Application::Dispatch と Webアプリ

いざ起動しようとしたら、モジュール欠けメッセージ。

Can't locate CGI/Application/Dispatch.pm in @INC..

cpan -i CGI::Application::Dispatch
で、Apache周辺でつまずいているとのこと。。


~エラーメッセージ~
This module can optionally use Apache::Test to test the mod_perl functionality.
Undefined subroutine &ExtUtils::MakeMaker::prompt called at Makefile.PL line 31,
line 547.
Warning: No success on command[C:\Perl\bin\perl.exe Makefile.PL]
WONKO/CGI-Application-Dispatch-2.12.tar.gz
C:\Perl\bin\perl.exe Makefile.PL -- NOT OK


Apache::Testのことは、下記URLにて触れてあったけど何か違う気が‥。。
http://mt.endeworks.jp/d-6/2008/03/apache-test-starters.html


Apache::Testのインストールを試みるものの、続き。

We are now going to configure the Apache-Test framework.
This configuration process needs to be done only once.

ん?

First we need to know where the 'httpd' executable is located.
If you have more than one Apache server is installed, make sure
you supply the path to the one you are going to use for testing.
You can always override this setting at run time via the '-httpd'
option. For example:

% t/TEST -httpd /path/to/alternative/httpd

or via the environment variable APACHE_TEST_HTTPD. For example:

% APACHE_TEST_HTTPD=/path/to/alternative/httpd t/TEST

If for some reason you want to skip the test suite, type: skip
Please provide a full path to 'httpd' executable:


Apacheサーバまでのパスを指定しろとのこと。
xamppに入れていたものを使っていたので、c:\xampp\apache 直下にhttpd.exe と apache.exeがあるからいいのかな?と指定したものの、、


The path 't/TEST -httpd c:\xampp\apache\bin' is not an absolute path. Please specify an absolute path

Please provide a full path to 'httpd' executable:

とのことでした。

Apacheのことわかってないな、、と反省。。

2008年3月11日火曜日

catalyst 手習い

備忘録的なまとめ。。

  1. Start of Catalyst

    まずは型から。基礎の詳細はこちら

    本家CPANはここ


  2. apacheとの連携など

    どのページを閲覧制限するかといった事項には、「教えてgoo」の下記の回答がGoodでした。
    http://oshiete1.goo.ne.jp/qa2815083.html


  3. pukiwiki for Catalyst

  4. Ajax & .. (with prototype和訳ver.)

    ここではMiniMojoの作成法も。。

  5. ケータイでも .. (MobileUserAgent)

  6. Plagger + Catalyst .. Yusukebe's CDTube

  7. はてなと .. hetena group


    以下、随時追加していく予定。

ControlをChain状につなぐChained Action。。

なお、"filetype:pdf catalyst シャノン"でGoogleると、㈱シャノンで公開されたCatalyst資料が見れます(※PDFファイル330枚強あるので注意)。
サーバ負荷やその他のフレームワークにも触れていて大変勉強になりました。

Catalsyt +α の部分は下記URLで確認。
http://catalyst.g.hatena.ne.jp/lapis25/20071201#tb

2008年1月18日金曜日

plaggerとケータイ

ここ
①http://www.area51.gr.jp/~rin/diary/?date=20060920#p05
と、
ここ
②http://d.hatena.ne.jp/s_nobu/20060905/1157451726


を参照しながらケータイにplaggerでRSS配信できるかチェック。

まず①URLで流れを確認。

次に②で「Publish::Iso_2022_jp_mail」と「Filter::FormatText」をそれぞれコピペ。

それぞれ
 
 ・C:\Perl\site\lib\Plagger\Plugin\Publish\Iso_2022_jp_mail.pm
 ・C:\Perl\site\lib\Plagger\Plugin\Filter\FormatText.pm
 
のファイル名にして配置。

次に、config.weather.yamlを自分用(mailto:部)に修正。。

実行。

HTML::WikiConverter欠け→CPAN起動で補填
Jcode欠け→(同上)

再び実行。

Can't use string ("Filter::FormatText") as a HASH ref while "strict refs" in use at ~Plagger.pm line 199, line 855.

のエラー発生

MovableTypeサポートで同様なメッセージの際は、アクセス権限を設定とかある。

HASHの扱いならこのように配列自体を直すとのこと。

(以下、日を改め)

Hashの扱いではなく、"use strict;"の指摘箇所を直せば良さそう。
参照

で、ソースを確かめてみる。。
エラーに対しては、
no strict 'refs';を追加・修正すれば良いらしい。
ただ、いじっていたらエラーが"
varsrefssubs"でコロコロ変わるもんだから、いっそここはno strict;を仮置き。。

sub autoload_plugin {
no strict;
my($self, $plugin) = @_;
unless ($self->is_loaded($plugin->{module})) {
$self->load_plugin($plugin);
}
}

先のエラーのとおり「
Plagger.pm line 199」の箇所は解けたのだけれど、今度はline 224で発生。
同様に処理。

次は、Can't locate Plageer/Plugin/.pm in @INC~ line 234とのこと。
no strict;をline 224前後に加えたことで、load_pliginサブルーチン内で引っかかってしまったのかも。

"Filter::FormatText"を直す必要あり?

(以下、さらに日を改め)

修正中。。。

2008年1月14日月曜日

PlaggerとYAMLファイルのディレクトリ

plaggerとYAMLのファイル格納先に関する情報が足りない気がしたので備忘録。


◇「config.yamlの中身」 ←C:\Perlに格納

global:
plugin_path:
- C:\Perl\site\lib\Plagger\Plugin (←pluginディレクトリアドレス)
assets_path: C:\Perl\site\lib\Plagger\assets (←assetsディレクトリアドレス)
timezone: Asia/Tokyo
cache:
base: C:\
log:
level: info


◇「hello.yaml」の中身 ←C:\Perl\site\lib\Plagger\Pluginに格納

plugins:
- module: CustomFeed::Debug
config:
title: 'Example Blog'
link: 'http://www.example.com/'
entry:
- title: 'Hello'
link: 'http://www.example.com/hello.html'
body: 'Hello, world!'

- module: Publish::OutlineText
config:
filename: C:\perl\hello.txt (←出力先、ここではテキストファイル形式で)
encoding: Shift_JIS


◇「出力結果」

コマンドプロンプトにてワークディレクトリまで移動して、
plagger -c hello.yaml

で、Plagger[info] plugin ~~ loadedのメッセージが複数出現する。
(ここで"plagger::Plugin::Publish::OutlineText [fatal] /~~~: No such file or dictinary at line 47"のようなエラーがあれば、YAMLファイルの格納先が違っている可能性があります。)

で、無事通過したら、

type C:\perl\hello.txt (←先程指定した出力先のファイルを記述)


.Example Blog
..Hello
Hello, world!

が、表示されるのでした。。

以上、module: CustomFeed::Debugとmodule: Publish::OutlineTextのどの部分が出力対象になるか確認。

2008年1月6日日曜日

フレームワーク学習 Plagger

日経ソフトウェア発行の「ずばりわかる!Web2.0プログラミング」誌を参照しつつ、
Plaggerを学習。

2006年前半期に公表されたフィードアグリゲーターなるものとのこと。
有名な参考記事は"「はらへった」とGoogle検索すると宅配ピザが届くシステム"が見つけられた。

大学院の研究で、Web上の情報を採取・加工するツールとして使えないか検討中。

本日はPlaggerのインストールにて(OSはVistaで頑張っています)。

前述の本を参考に
  1. ftp://ftp.microsoft.com/Softlib/MSLFILES/やftp://ftp.zlatkovic.com/pub/libxmlから必要なファイルをDL
  2. ppm経由で、Theoryx5リポジトリとYamlモジュールをインストール
  3. Plaggerをインストール
という流れで進行。

項番1. 2. は難なく済んだものの、3.で混迷。。

以下Plaggerインストール手順です。

**参照URL

plaggerのつまづいた際は
http://www.otsune.com/fswiki/plagger.html#p26

CPANインストール他
http://digit.que.ne.jp/visit/index.cgi?2006%C7%AF2%B7%EE#pplagger「2006年2月28日」

plagger利用のおおまかな流れは
http://mion.jp/blog2/index.php?d=20060820
**

誌面にもあるように、plaggerはppmでは0.7.14、CPANでは0.7.17と配布されるバージョンが異なります。
今回はCPANから0.7.17を利用。


◇CPAN経由でplaggerをインストール

CPAN起動コマンドは
perl -MCPAN -e shell

インストールは
force install Plagger(←モジュール名、forceはなくてもOK)
を入力。

(enter)キーをずっと反復し、224個のファイルをコピー完了
CPAN 終了 quit

次に、dir /b C:\Perl\CPAN\build\Plagger-*でassetsフォルダの存在を確認し
xcopy /I /E /H /Y c:\Perl\cpan\build\Plagger-0.7.17-diaVM0(←zero)\assets c:\Perl\site\lib\Plagger\assets  
でassetsフォルダをコピー 完了。

ここから誌面との相違が発生、、

C:\>plagger -v
でバージョン確認しようとするも失敗

エラーメッセージは「'plaggerは、内部コマンドまたは・外部コマンド'、操作可能なプログラムまたはバッチファイルとして認識されていません。」

plaggerをインストールしただけではコマンド認識されないことが調べて発覚。
plagger.batを作成することにした。


◇plagger.bat作成法

C:\>cd c:\perl\cpan\build\plagger-0.7.17-diaVM0
C:\Perl\cpan\build\Plagger-0.7.17-diaVM0>pl2bat plagger
を入力し、
plagger-0.7.17-diaVM0ディレクトリ下に作成された「plagger.bat」をperl\binへコピー。

これで先のエラーは解消。


◇plagger実行

いざplaggerを実行するもここでもエラー発生。

c:\>plagger
Can't locate Plagger.pm in @INC (@INC contains: C:\Perl\bin\lib C:/Perl/site/lib
C:/Perl/lib .) at C:\Perl\bin/plagger.bat line 21.
BEGIN failed--compilation aborted at C:\Perl\bin/plagger.bat line 21.

そういえば、先にインストールしたCPANディレクトリ下に該当ファイル「Plagger.pm」が
含まれていたことを思い出し、
C:\Perl\cpan\build\Plagger-0.7.17-diaVM0\lib から「Plagger.pm」ファイルをC:/Perl/site/libへコピーで対処(したつもり)。

再度、コマンドプロンプトにてc:\>plagger実行するも今度は
Can't locate XML/XPath.pm in @INC (@INC contains: C:\Perl\bin\lib ~)
のエラー発生。。


ここで、参照URLを調べると "Can't locate ○○.pm in @INC~"のメッセージは
○○のモジュールが欠けているor環境変数の設定に不備がある
のいずれかとのこと。

環境変数はとりあえず触れないでおき、先程と同様にCPAN起動、インストールを試みる。

CPAN起動し、install XML::XPathでインストール

CPANをquitで閉じ、
コマンドプロンプトにてplageerと入力すると、今度は

「c:\Perl\cpan\build\Plagger-0.7.17-diaVM0>plagger
Plagger::ConfigLoader->load: C:\Perl\cpan\build\Plagger-0.7.17-diaVM0\config.yam
l: No such file or directory at C:\Perl\cpan\build\Plagger-0.7.17-diaVM0\lib/Pla
gger.pm line 47」
と表示された。

plagger -vを入力すると

「c:\Perl\cpan\build\Plagger-0.7.17-diaVM0>plagger -v
Plagger version 0.7.17」

"Plagger version 0.7.17"の表示が確認され、Plagger実行環境が整ったと判断できた。


P.S.

後日再度plaggerを起動しようとしたところ、plagger -vの入力後
Can't locate Plagger/Cache.pm in @INC (@INC contains: C:\~)
のエラーが発生。

前回の方法(CPAN起動&モジュールインストール)で対処してみた。
何度か試したものの、メッセージが消えないので右往左往。。

結果
C:\Perl\cpan\build\Plagger-0.7.17-diaVM0\lib\Plaggerの中身(のフォルダ&ファイル)を
C:\Perl\site\lib\Plagger直下にコピペしたら治った。。

2008年1月3日木曜日

フレームワーク学習 Catalyst

前回同様Catalystの学習

実用に近いアプリケーションの感触を確かめたいので、
今回は日経BP社サイトからcodeを拝借。
(アプリケーション名は"Dict"、単語検索簡易辞書)

以前xamppダウンロード時に組み込まれていたsqlite.exeを
C:\Perl\site\bin\Dict\dbへコピー。

拝借したcodeの中にdict.sqlが含まれていたので、
 sqlite.exe dict.db < dict.sql
にてDB作成。

さらに、dict.ymlファイル「upload_dir:」「dsn:」部を
実行環境に応じて修正。

---
name: Dict
encoding: UTF-8
upload_dir: C:\Perl\site\bin\Dict
Model::DictDB:
dsn: dbi:SQLite2:C:\Perl\site\bin\Dict\db\dict.db

でdict\scriptディレクトリにて、dict_server.pl 実行。

以上、アプリの正常な画面遷移を確認できた。

2008年1月1日火曜日

perl雑記 フレームワーク編

フレームワークCatalyst学習

環境:
Windows Vista
perl 5.8(Active Perlインストール済)
Catalyst 2.0(2.1が最新)

で、書籍「ずばりわかる!Webプログラミング2.0」からPerlに慣れるべく奮闘。


114ページあたりのCPANからCatalyst入れる際に、Task-Catalystのインストールにつまづく。

エラー内容が既存ファイルの衝突とのこと、しかしそのファイルが見当たらなかったため検索。
「C:/Perl/html/site/lib/Catalyst/Helper.html」

すると、Task-CatalystでなくBundle-Catalystでもいけるようなのでこちらをインストール。
以下、'Hello'スケルトンを作成するも、障害が起こらないので良しとした。

(参考URL)http://naoya.dyndns.org/~naoya/mt/archives/001682.html


Catalystは確かにMVCモデルに従うディレクトリ構成(フォルダ名がそのままMとVとC)をしていた。

単純にControlとView部のみを対象に'Hello'アプリを作成することにする。
Root.pmを適宜修正し、Helloアプリのrootディレクトリにroot.ttを追加すると"Hello!"表示がされた。

次は、SQLiteと合わせてやってみるつもり。

Blogger Syntax Highliter