「実践実用Perl」サポート
「実践実用Perl」サポート掲示板
先頭/ 6 / 7 / 8 / 9 / 10 / 11 / 12 / 13 / 14 / 15 /
P.57のfavorites2.plについて
Duo 2006/05/10 05:25:40
藤岡 様

先日はどうも丁寧なご説明ありがとうございました。
あれから次の項に進んだのですが、@_やサブルーチンが
よく分からず挫折し、しばらく手をつけていませんでした^^;
最近になり読み返したところ、どうしても分からないところが
一点あったので、ご指導お願いしたく、書き込みしました。

favorites2.plの3行目の"\\.url\$"の意味がよく分かりません。
これは36行目の/$pat/で使われるパターンということまでは
分かるのですが、これは例えば
C:\Documents and Settings\Duo\Favorites\msn.co.jp.url
の.urlでマッチさせているということで良いのでしょうか。
とりあえず最初の\は次の\をエスケープさせるものだと思うの
ですが、そうなると.urlの.をエスケープさせる\がないように
思えます。最後の\$の意味もよく分かりません。これはエスケープ
してるのでしょうか。何か根本的に勘違いしていることが
あるかもしれませんが、ここで数時間詰まっているのでお手数
ですが、アドバイスお願いします。

 引用しない
 編集キー
▲ page top
Re: 52ページのfavorites.plについて
藤岡和夫 2006/04/06 21:07:41
>$favoriteの中身が変わるのであれば、何故わざわざ$1に置換した
>ものを格納する必要があるのでしょうか。$1も$favoriteも同じ
>ものが格納されているんですよね?

 $1の値は後方参照をするパターンマッチをする度に変化します。
while(<FILE>){...}のループ内の、if(/^URL=(.+)$/){...}の部分
です。$favoriteに格納した値を使うのは、新しいパターンマッチ
が起こった後に使うことになるからです。そうでなければ、おっ
しゃるように$1を使っても問題ありません。

 引用しない
 編集キー
▲ page top
Re: 52ページのfavorites.plについて
Duo 2006/04/06 11:48:02
> 藤岡 様

早速のご返信ありがとうございます。


>順番を逆にすると動かなくなるのは、置換演算子で$favoriteの
>内容を書き換えているために、ファイル名が存在しないものになる
>ので、ファイルをopenできなくなるからです。

やはりそうでしたか。パターンマッチングの際の動きがよく理解
できていませんでした。$favoriteの中身は見るだけで、置換した
ものは$1に入り、$favoriteには変化がないものだと思って
いました。これで理解できました。有難うございました。
しかし、これでまた疑問が1つできたのですがよろしいでしょうか。
$favoriteの中身が変わるのであれば、何故わざわざ$1に置換した
ものを格納する必要があるのでしょうか。$1も$favoriteも同じ
ものが格納されているんですよね?


>どのようなご質問でも受け付けますので、ご遠慮なくご質問くだ
>さい。このようにサイトを設けているのは、毎日コミュニケーショ
>ンズ社の要請によるものではありませんし、基本的には関係ありま
>せん。Perlは私の趣味ですし、何かお役に立てればと考えて運営し
>ています。

ご好意に感謝します。そういっていただけると非常にありがたい
です。できるだけ自分で考えて調べてみるつもりですが、もし
また何か本書について疑問な点があればお伺いしたいと思います。

 引用しない
 編集キー
▲ page top
Re: 52ページのfavorites.plについて
藤岡和夫 2006/04/05 20:11:09
>数ページでかなり包括的に学ぶことができる仕様になっており
>満足しております。

ご評価ありがとうございます。第1章がPerlの学習としてはすべて
ということができます。これをクリアすれば、後は同じようなもの
で、モジュールやCGIの知識を吸収すると簡単に理解できるはずです。

>プログラミングにはまだ不慣れで、初歩的な質問で申し訳ない
>のですが、52ページで紹介しているfavorites.plの20行目と
>21行目に
>open(FILE, "<$favoritesdir\\$favorite");
>$favorite =~ s/^(.+)\.url$/$1/i;
>とありますが、この順番を逆にしたら結果が表示されません
>でした。
>この本でのこれまでの理解だと、この行を逆にしても動作に問題は
>ないように思えたのですが、実際は結果が表示されません。

 順番を逆にすると動かなくなるのは、置換演算子で$favoriteの
内容を書き換えているために、ファイル名が存在しないものになる
ので、ファイルをopenできなくなるからです。

 順番を逆にするためには、

($title = $favorite) =~ s/^(.+)\.url/$1/;

のようにしておけば、$favoriteは元の値を保持したままになりま
すから、問題なく、openできるようになります。そうしておいて、
後に出てくる$favoriteを$titleに書き換えれば目的が達成されます。

>このような質問はサポートの対象外かもしれませんが、もしお答え
>していただけるようであれば、よろしくお願いします。
>トラブルシューティング以外の書き込みが禁止であれば
>お手数ですが削除をお願いします。

 どのようなご質問でも受け付けますので、ご遠慮なくご質問くだ
さい。このようにサイトを設けているのは、毎日コミュニケーショ
ンズ社の要請によるものではありませんし、基本的には関係ありま
せん。Perlは私の趣味ですし、何かお役に立てればと考えて運営し
ています。

 引用しない
 編集キー
▲ page top
52ページのfavorites.plについて
Duo 2006/04/05 06:42:19
>藤岡 様

数ページでかなり包括的に学ぶことができる仕様になっており
満足しております。

プログラミングにはまだ不慣れで、初歩的な質問で申し訳ない
のですが、52ページで紹介しているfavorites.plの20行目と
21行目に
open(FILE, "<$favoritesdir\\$favorite");
$favorite =~ s/^(.+)\.url$/$1/i;
とありますが、この順番を逆にしたら結果が表示されません
でした。
この本でのこれまでの理解だと、この行を逆にしても動作に問題は
ないように思えたのですが、実際は結果が表示されません。
このような質問はサポートの対象外かもしれませんが、もしお答え
していただけるようであれば、よろしくお願いします。
トラブルシューティング以外の書き込みが禁止であれば
お手数ですが削除をお願いします。

 引用しない
 編集キー
▲ page top
Re: HTML表の出力
藤岡和夫 2006/04/03 23:27:47
>確認しました。

ご苦労様です。

Windowsにおいて、system関数がどのように挙動するかについて書
いてある本はおそらくないと思います。自分で試して、動くような
書き方をするしかありません。私も単純にhtmlファイル名を記述し
ただけでは起動できなかった経験があります。その時はやはり、
startコマンドを付加して解決したと思います。それがどのような
場合だったかは思い出せないのですが・・・実践実用Perlの238
ページのスクリプトでは、startコマンドを使っていますね。

関連付けを使わずに、アプリケーションを直接記述するのは確実な
方法ですね。もちろん、その場合は、パスの問題も意識する必要が
あります。

 引用しない
 編集キー
▲ page top
Re: HTML表の出力
masa 2006/04/03 21:45:47
確認しました。
ファイルの拡張子は、問題なく関連付けされています。
ファイル名の前にSTARTコマンドを入れる方法で起動することができ
ました。
尚、他のファイルの起動も同様の手順で起動することができました。
テキストファイルをメモ帳で開く場合は、DOSのコマンドラインから

  perl -e "system(\"start mycom.txt\")"

で開くことができます。

又は、開くアプリケーションを指定して、

  perl -e "system(\"notepad mycom.txt\")"

で開くことができます。
※アプリのパスが通っていない場合は、フルパスで





 引用しない
 編集キー
▲ page top
Re: HTML表の出力
藤岡和夫 2006/03/30 00:29:20
>実践実用Perlを読み始めて3日になります。
>他のPerl本も読みましたが、内容が他の本と違った切り口で書か
れてい
>ておもしろく読み進めています。

 藤岡です。ご評価いただき大変ありがとうございます。この本
は、私が現在どのようにjperlを使っているか、そしてここ10年以
上どのように使ってきたかのまとめのような本ですので、テキスト
処理という観点からは多少はお役に立てる実用的な本だと考えてい
ます。また、スクリプトとしては簡単でも、デスクトップのCGIと
して動かすと、Webとデスクトップを結び付けるアプリケーション
が作れることを示したという意味で、2003-2004年に書いた本とし
ては時代の先端を走っていると思っています(^^)

>ところで、スクリプトが上手く動作しなかったのでお知らせします。
>OSは、Windows Me です。
>(OSの問題でしょうか? 2000、XPだと正常に動くのでしょうか。)

 例えば、カレントディレクトリにあるabc.htmlを表示させようと
すると、

jperl -e "system(\"abc.html\");"

としますと、htmlファイルに関連付けされたWebブラウザが起動し
ます。起動できないということは、おそらく、関連付けがなされて
いないのだと思います。

 エクスプローラのツール→フォルダオプション→ファイルの種類を
たどって、拡張子"HTML"に関連付けされているアプリケーションを
調べてみてください。

 もう一つの可能性としては、abc.htmlの前に、startのコマンド
を入れると動くかもしれません(XPではいずれでも動きます)。MEが
手元にないので確かめることができませんが、よろしくお願いいた
します。次のようです。

jperl -e "system(\"start abc.html\");"

>------------------------------------------------------------
>タブ区切りレコードをHTMLの表に変換する tab2tbl.pl (42ページ)
>
>出力したHTMLファイルの起動で
>system("table.html");
>を実行すると、
>「コマンドまたはファイル名が正しくありません。」
>HTMLファイルが起動できません。
>
>以下のようにIEフルパスで指定すると起動できます。
>system('"C:\Program Files\Internet
>Explorer\IEXPLORE.EXE" "C:\Scripts\Perl\table.html"')

 引用しない
 編集キー
▲ page top
HTML表の出力
masa 2006/03/29 11:02:34
実践実用Perlを読み始めて3日になります。
他のPerl本も読みましたが、内容が他の本と違った切り口で書かれてい
ておもしろく読み進めています。

ところで、スクリプトが上手く動作しなかったのでお知らせします。
OSは、Windows Me です。
(OSの問題でしょうか? 2000、XPだと正常に動くのでしょうか。)

------------------------------------------------------------
タブ区切りレコードをHTMLの表に変換する tab2tbl.pl (42ページ)

出力したHTMLファイルの起動で
system("table.html");
を実行すると、
「コマンドまたはファイル名が正しくありません。」
HTMLファイルが起動できません。

以下のようにIEフルパスで指定すると起動できます。
system('"C:\Program Files\Internet
Explorer\IEXPLORE.EXE" "C:\Scripts\Perl\table.html"')

 引用しない
 編集キー
▲ page top
rss2html.cgi/atom2html.cgiのバージョンアップ
藤岡和夫 2006/03/05 11:34:56
毎度です。

表題の件、下記URLに置いておりますので、ご参考にしてください。

rss2html.cgi → http://homepage1.nifty.com/kazuf/htunes.html

atom2html.cgi →
http://homepage1.nifty.com/kazuf/atom2html.html 

 引用しない
 編集キー
▲ page top
Re: 中級者以上?
藤岡和夫 2006/02/07 21:31:02
>実践実用perlを購入して1ヶ月以上経ちますが、理解できません。
>専門用語、perlの構文をづらづら〜っと記述されているのです
>が、具体的にこれはなにをしているのか全く理解できず、悩んで
>居ます。これから始めようとする者にはあわないですか?。

お疲れ様です。まずは、第1章の例を最初から一つ一つ動かしてみ
ることをお勧めします。そうすれば、Perlの基本的な要素はすべて
習得できると思います。わからないことが出れば第2章を参考にし
てみてください。それでもわからなければ、ここで質問していただ
いても結構です。

>perlでやりたい事は、
>メールフォーム作成
・・・
>アクセスカウンター
・・・
>シュッピングカート
・・・
>サイト内検索
・・・
>こんな事してみたいのですが、頑張って勉強したいと思ってはい
>るのですが、もっとやさしい参考書から始めるべきでしょうか?
>また、「こうすれば勉強がはかどるぞ!」ってことありましたら
>教えてください。

 かなり具体的な目的が上げられていますね。ご存知のように私の
本にはそのような例はないので、残念ながら掲載したスクリプトを
参考にすることはできません。私の手持ちの本を見てみますと、秀
和システムから発行されている吉川剛、谷中一朝、成田政司著、
「だれでもカンタンCGI&SSIサンプル集」という本がご希望の内容
に近いスクリプトが掲載されています。ご参考にされるとよいかも
しれません。この本はネットサーフレスキュー【Web裏技】やCGI
Cellection RoomのようなCGIの専門サイトのスクリプトを収録して
います。まずはWebサイトにアクセスされてみるのもよいのではな
いでしょうか。

CGI RESCUE - ネットサーフレスキューWeb裏技
http://www.rescue.ne.jp/

CGI Collection Roomは見つからないですね。この本も1998年の出
版ですからね。

 引用しない
 編集キー
▲ page top
中級者以上?
perlアレルギー 2006/02/06 09:55:42
実践実用perlを購入して1ヶ月以上経ちますが、理解できません。
専門用語、perlの構文をづらづら〜っと記述されているのです
が、具体的にこれはなにをしているのか全く理解できず、悩んで
居ます。これから始めようとする者にはあわないですか?。
perlでやりたい事は、
メールフォーム作成
(送信の際に必須項目に不備がある箇所に対してエラー。なけれ
ば内容確認画面。良ければ送信)

アクセスカウンター
(ホームページ上では見れないアクセスカウンター。アクセス解
析でしょうか。習得したデーターを別ファイルに拾得しそのデー
ターをアクセス解析用のページ<html>に吐き出し。本人のみが閲
覧可能。自動的にセルを作成する。)

シュッピングカート
(購入手続き完了するまで、カゴに入れた物のクッキー。自動計
算。購入確認メール(双方))

サイト内検索
(例_車などの検索。金額での検索。メーカーでの検索。・・・
前例等を組み合わせての検索。)

こんな事してみたいのですが、頑張って勉強したいと思ってはい
るのですが、もっとやさしい参考書から始めるべきでしょうか?
また、「こうすれば勉強がはかどるぞ!」ってことありましたら
教えてください。

 引用しない
▲ page top
CPAN配布libnetモジュールをインストール記事へのリンク
藤岡和夫 2006/01/03 11:17:34
 過去記事を確認していますと、リンクが切れていましたので、再
度掲載いたします。

[Perl] 「実践実用Perl」講座 (]) - CPAN配布libnetモジュールを
インストールする
http://homepage1.nifty.com/kazuf/renewal_2005_06.html#perl_1118325643

 引用しない
 編集キー
▲ page top
読者の皆様へ
藤岡和夫 2006/01/03 11:03:52
 毎度お世話になります。

 「実践実用Perl」も出版後1年を経て、利用環境も変化しており
ます。詳細につきましては、本サポート掲示板の過去記事をご参照
お願いいたしますが、どのようなことが問題点になるか、少し整理
しておきましょう。

・ 既に、ご指摘をいただいておりますように、libnetモジュール
のインストール(1.3.3)については、ppmでオンラインでインストー
ルすることはできなくなっております。zipアーカイブからダウン
ロードして、オフラインでインストールする必要があります(ppmの
問題 藤岡和夫 2005/03/28 22:21:10の記事参照)。

・ Unicode::Japaneseモジュールは本書執筆時からバージョンが
上がって、0.27になっております。これは同様にしてそのままお使
いいただいても問題ないのではと考えております。

・ Jcode.pmも本書に記載したバージョンは弾氏のサイトにはなく
なり、CPANからダウンロードしてインストールする必要があります
(Re: Jcode.pmのインストール 藤岡和夫 2005/09/07 21:34:26の記
事参照、新しいバージョン2系列も使えると考えられますが、私は
未確認です。)

 インストール関係でその他は特に問題はないと考えております
が、その他、疑問点等ございましたら、どのような小さなことでも
結構ですから、ご質問いただければと思います。

 本掲示板は投稿いただくと私宛に投稿の知らせがメールで届く仕
組みになっておりますので、見落としはよほどのことがないかぎり
はありません。迅速にご返事できると思いますので、よろしくお願
いいたします。

 引用しない
 編集キー
▲ page top
Re: すべて実践実用
藤岡 2006/01/02 23:20:05
>19ぺーじ1.3.2〜22ページ1.3.6まで!

早速コメントありがとうございます。

 一つずつ問題を解決していきましょう。まずは1.3.2のJperlの
インストールからです。ActivePerlのAPi522e.exeを使って、Perl
が問題なくインストールされていることが前提です。

jperl
http://homepage2.nifty.com/kipp/perl/jperl/

上記の鈴木紀夫氏のサイトから、jperl522.zipのダウンロードは
できましたでしょうか。そのあとの解凍、jinstall.batの実行の
作業のうち、どこまでできましたでしょうか。

おそらく説明不足の点があると思いますので、何をご説明すれば
お役に立つのか、ご質問いただければと思います。

 引用しない
 編集キー
▲ page top
Re: すべて実践実用
hhhh 2006/01/02 22:00:09
>>書いてる事をしてもなにもできません。なんですか?これ!
>>最初から書いてる通りしてるのに、嘘ばかりですやん。
>
> すみませんが、具体的に何ができないのかについて教えていた

>けますでしょうか。
19ぺーじ1.3.2〜22ページ1.3.6まで!

 引用しない
▲ page top
Re: すべて実践実用
藤岡和夫 2006/01/02 20:53:09
>書いてる事をしてもなにもできません。なんですか?これ!
>最初から書いてる通りしてるのに、嘘ばかりですやん。

 すみませんが、具体的に何ができないのかについて教えていただ
けますでしょうか。


 引用しない
 編集キー
▲ page top
全て実践実用
なんとかして 2006/01/02 20:21:42
書いてる事をしてもなにもできません。なんですか?これ!
最初から書いてる通りしてるのに、嘘ばかりですやん。出来ない
事なんぞ書いて売り物にするな!くそ詐欺師!書き直したものを
購入者に無料でおくれ!どあほ!

 引用しない
▲ page top
Re: Jcode.pmのインストール
藤岡和夫 2005/09/10 00:20:39
>上記URLからインストールする事ができました。
>ありがとうございました。

よかったですね。

>また、わからない事があったら質問してしまうと思いますが、
>その時は、宜しくお願いします。

 なにでもどうぞ。こちらこそよろしくお願いいたします。

 引用しない
 編集キー
▲ page top
Re: Jcode.pmのインストール
鈴木 2005/09/09 09:15:48
> バージョンが上がって、win_install.plが同梱されなくなりま

>たね。
>
>http://search.cpan.org/~dankogai/Jcode-0.88/
>
>から、0.88をダウンロードしてください。

上記URLからインストールする事ができました。
ありがとうございました。
また、わからない事があったら質問してしまうと思いますが、
その時は、宜しくお願いします。

 引用しない
▲ page top
Re: Jcode.pmのインストール
藤岡和夫 2005/09/07 21:34:26
>これからPerlを勉強しようと実践実用Perlを購入しました。

はじめまして、ご購入ありがとうございます。

>早速、インストールを…と思ったのですが、
>Jcode.pmのインストールがうまくいきません。
>まず、インストールサイトに行き
>http://openlab.jp/Jcode/index-j.html
>Jcode-0.87.tar.gzがなかったため、Jcode-2.03.tar.gz を
>ダウンロードし、解凍したのですが、
>解凍フォルダの中にwin_install.plがありません。

 バージョンが上がって、win_install.plが同梱されなくなりまし
たね。

http://search.cpan.org/~dankogai/Jcode-0.88/

から、0.88をダウンロードしてください。

 よろしくお願いいたします。

 引用しない
 編集キー
▲ page top