954 :
935 :2006/07/19(水) 12:07:13
平日の昼12時にアルタ前でオナってくればいい。
955 :
デフォルトの名無しさん :2006/07/19(水) 12:54:21
PerlはC with classes が誕生する何年前に産声をあげましたか?
>>929 やっぱ、テンプレートエンジンって楽しいから自作で作っちゃうよな。
でも、独自の文法とかだと新しいプログラミング言語覚えるみたいでめんどくさい気がするんだが。
MovableTypeのSmartyだっけ?あれも新しいプログラミング言語覚えるみたいで嫌になるけど。
ASPとかJSPとかERBみたいにシンプルなもののほうがいいのでは?
SmartyはPHPでしょ…。 MovableTypeはダイナミック・パブリッシング機能を利用時にPHP+Smartyが必要ってこと。 >ASPとかJSPとかERBみたいにシンプルなもののほうがいいのでは? ASP,JSP,ERBに対する評価は宗教戦争に発展しかねないのでノーコメントとして 俺は各種プログラミング言語ごとにテンプレートエンジンに互換性がないことが不満で、 最近はClearSilverとかに注目中。
$str = 'AxBxC'; @x = split('x', $str); print join('-', @x),"\n"; $str = 'A/B/C'; @x = split('/', $str); print join('-', @x),"\n"; $str = 'A|B|C'; @x = split('|', $str); print join('-', @x),"\n"; 上を実行すると、以下のように3つ目だけ異なる結果になります。 A-B-C A-B-C A-|-B-|-C セパレータが | の時にも上二つと同じ結果が出るようにしたいのですが、 どうしたらいいんでしょうか?
perldoc -f split 汁 第一引数は文字列ではなくてPATTERN @x = split('\\|', $str);
@x = split('\|', $str);
>>958 splitの第一引数は正規表現なので、正規表現のメタ文字はエスケープする必要がある。
また、正規表現を期待されているところに文字列リテラルを書くのは個人的には好きじゃ
ないのでこんなとこ。
@x = split(/\|/, $str);
三人が三人とも書き方が違うのが面白いな
更新すれば良かった
splitでパターンの部分をシングルクォートで囲んでる奴らはキモイ
調べなさ過ぎる奴多すぎるから 次のスレのテンプレでは perldocで最低限調べろとか入れて欲しい
>>964 Perlのsplit(他にあるのかは知らないけど)の仕様自体ちょっと嫌だな・・・
>>965 書いても無駄。
それに本当に鬱陶しいのはそれ以前のレベルの連中だから
・スレ違いの質問はスルーか速やかに誘導すること
の一言を入れて欲しい。
テンプレ読まない連中のための注意書くより、ちゃんと読むであろう真面目な解答者への注意入れたほうが効果的だと思う。
標準外だが知っておくべきな便利なCPANモジュールを教えてください。
969 :
799 :2006/07/19(水) 18:24:21
テンプレートエンジンとかフレームワークの乱立はうざい しかし作る人の技術向上には貢献するだろう したがって作る人にはメリットがあるが使う人にはメリットがない のがテンプレートやフレームワークなのだ なんという矛盾、皮肉 Javaと一緒である。みんなでStruts使ってればいいものを 難しいとかいちゃもんつけてもっとややこしい仕組みを提案して 金儲けをした屑どものなんとうざいことか せっかく自転車に乗れるようになったのに 「省スペースだから」という理由で一輪者を押し付けられるようなものだ テンプレートエンジンの作成は非モテと通ずるものがある 非モテの言論界があんなにかまびすしいのはあれがとても ユーザフレンドリーだからだ 非モテという経験は誰にもあり、何の前提知識もいらずに 皆が飛び込みわいわいできる 難しいこと考えなくてもそれなりに貢献感が持てる テンプレートエンジンの作成はまるで無節操なやりマンのようだ 快楽だけとってあとは医療廃棄物だ まつもとひろゆきさんがいっているようにRailsが優れているのは作者の マーケティングである。それのみである。 WebServiceなんていう創造性のかけらもない領域で生産性なんてうんぬん したってしょうがないのである フレームワークはVSとEclipseとEmacsで十分だ いっておくが俺が一番うざい
そんなお前が好きだ
971 :
956 :2006/07/19(水) 19:26:46
>>957 >SmartyはPHPでしょ…。
スィマッターソーダッター!
>>969 やりマンとやりたいまで読んだ。
そんなお前が好きだ
972 :
デフォルトの名無しさん :2006/07/19(水) 19:41:03
乱立と言えば、CPANも乱立状態が定常化しているね。 パッケージαに自分が欲しい機能がない場合、そのαにその機能を追加することを しない。新たにyaαを作って登録することが定常化している。
>>972 CPAN まで TMTOWTDI だと困るんだけどねぇ…(笑)
モジュールFooがあると、Fast-Fooが登場し、Foo-Liteが登場し、 Tiny-Fooが登場し……
975 :
929 :2006/07/19(水) 23:35:41
>>944 >package名はHTML::SpTemplateのほうがいいんじゃない?
そうするとHTML/SpTemplate.pmって感じで保存することになるのでちょっといや。
(分類としてはまったくその通りだと思うが)
CPANにあげるとかなら変更するかも。
>use warningsがないのがキモイ。
前につけては見たけど、正規表現置き換え周りのwarningが消えなかったので諦めました。(ほんとはつけたい)
>use vars qw($VERSION %GLOBAL);よりもour ($VERSION %GLOBAL);のほうが。
>ていうか%GLOBALってmy変数じゃダメなの?教えて偉い人。
実はこの辺の使い分けがわかってないです。
どう使いわけるん?教えて偉い人。
>693行目の2引数のopenキモイ。古いPerlのこと考えたらしょうがないかもしれないけど。
ごめん。2引数以外のopenがわからん。最近のperlってどう書くの?
>sub Outputが大文字で始まるのキモイ。PODは小文字で書いてあるのに。
直し忘れ。PODが正しいです。
>sub _warnだけど、dieするんなら$thisを返さなくてもいいんじゃないの? sub sub_dumperもそう。
あ〜、サブルーチンは定型で作ってるから考えてなかったな。紛らわしいけど、実害ないのでこれはいいや。
>&Carp::croakのほうがいい。
同意。ただ、できるだけ依存したくないので、Data::Dumperっぽい扱いで修正。
976 :
929 :2006/07/19(水) 23:36:42
>_dieのほうがふさわしい。
そういえば、なんで_warnにしたんだ?>自分
_dieへ変更。
>メソッド名もsub _dumperのほうがいいかな。
「sub_」から始まるメソッドはテンプレート内から呼び出すメソッドなので、頭の「sub_」は削れない。
(これはテンプレート内から「[%dumper/%]」って感じで呼び出す)
>GPL/Artistic Licenseがいいな。
Artistic Licenseはいいけど、GPLは文書添付するのが面倒(単一ファイルが好きなので)
改変BSD License/Artistic Licenseかな。
>>957 >各種プログラミング言語ごとにテンプレートエンジンに互換性がないことが不満
同意。なので、一応これはPerlっぽくなくしたつもり。
(言語仕様も簡単なので、正規表現使える言語なら再実装もそんなに手間じゃないと思う)
>>969 >作る人にはメリットがあるが使う人にはメリットがない
同意。正直使う側のことを考えると公開しないほうが良かったかも。
(まぁ、広めるつもりないので、使う人間なんていないと思うが)
Perl勉強中でとにかくソースが読みたい人にはメリットあるかも。
>>976 957を書いた者だけど、
各種プログラミング言語ごとにテンプレートエンジンに互換がないことと
テンプレートエンジンの文法がPerlっぽくなくすは別問題と思われ
>>975 とりあえず、グローバルに use warnings しておいて、warnings が出る
箇所だけ、スコープローカルに no するのがいいんでないかい。
コメントあれば尚良し。
use vars と our は大体同じ役割だけど、our は確か 5.6.0 以降に追加された。
それより前のバージョンでも動作するスクリプトやライブラリなら、
use vars にするのが良いだろう。
%GLOBAL はパッケージ外から参照する必要がなければ my で良し。
個人的な希望を言うと、[% %] は変更できた方がいいかな。
細かいこと言うと、sub_ とかするぐらいなら、別の名前空間にブチ込んだ方が
いいかなぁとか、色々あるけど、好みの問題だし。
# Carp::croak() って、メッセージの最後に . が付かないんだよね。
# とても細かいんだけど、それが気に入らない。
# user@localhost:~$ perl -MCarp=croak -e 'croak("Died")'
# Died at -e line 1
# user@localhost:~$ perl -e 'die()'
# Died at -e line 1.
979 :
956 :2006/07/20(木) 00:45:44
>>976-977 他言語と互換を保つってきつくないか?
テーブルタグのような表出力の場合、イテレータやレコードセットオブジェクトみたいなデータ集合も、
テンプレートルールとして考えておかなくてはならんような希ガス。とか。その他、色々めんどくさす。
他言語に入れ替えられるっていってもそんなに用途なさそうだし。
いや、プログラミング手法が統一できるって意味では有用なのか。
>>979 957にわざわざClearSilverの名前が出てるんだからとりあえず見てから書けば?
>975 open (IN, '< '.$path) or die 'file open error'; # 2引数のopen open IN, '<', $path or die 'file open error'; # 3引数のopen
ExtUtils::MakeMakerで生成したMakefileでmake testすると -wで実行されてウザイのですが、-wつかないようにする にはMakefile.PLにはどう記述すればいいかわからず困って います。Test::Harnessがつけてるらしく $Test::Harness::switches をいじればいいっぽいのですが、どう書いていいやら。 自作の部分ははじめからuse warningで書いているので 余計な警告が使用している外部モジュールの中で出るだけ なので-wはあまりうれしくありません。
>>976 すまん。ちょっと使い心地をみようかと思ったんだけど podの通りに
use SpTemplate;
my $tmpl = SpTemplate->new(
'param' => { 'test' => 'hoge' },
'file_path' => './test.tmpl'
);
print $tmpl->output();
と書いたがエラーで動かない…。
file open error at SpTemplate.pm line 693.
file_path をいろいろ変えてみたが一緒。
とりあえず、オブジェクトの中身を見てみたら、
file_path => param
になっていて、'./test.tmpl' 自体は key として登録されてた。
984 :
デフォルトの名無しさん :2006/07/20(木) 20:02:31
一般ユーザー権限でperlから、 あるファイル(※権限777,ディレクトリも777)に対して renameを実行したら、権限エラーになってしまいましたが、 unlinkは成功しました リネームと削除は同等の権限がないと出来ないと思っていたのですが 違うのでしょうか?すみませんが詳しい方理屈を教えてください。
>>994 renameはrename先についての権限も関係する。
986 :
929 :2006/07/20(木) 23:21:03
>>977 >各種プログラミング言語ごとにテンプレートエンジンに互換がないことと
>テンプレートエンジンの文法がPerlっぽくなくすは別問題と思われ
そりゃそうだけど、Perlっぽい文法なら他言語じゃ使わんでしょ。
(記述言語っぽいやつって記述言語に依存してること多いし)
>>978 >とりあえず、グローバルに use warnings しておいて、warnings が出る
>箇所だけ、スコープローカルに no するのがいいんでないかい。
そやね。そうしようかな。
>%GLOBAL はパッケージ外から参照する必要がなければ my で良し。
一応%GLOBALは外部から参照されることを考えてる。
たとえば、スクリプトの先頭で「SpTemplate::GLOBAL{'default_escape'} = 'html'」とか書いとけば、
それ以後生成されるオブジェクトに継承される。
>個人的な希望を言うと、[% %] は変更できた方がいいかな。
これは考えたけど、「sub_if」内で「 [ ] 」とか使ってるから「[% %]」だけ変更できても意味ないかなと思ってやめた。
(「sub_if」内の変数まで全体で管理したくないし)
>細かいこと言うと、sub_ とかするぐらいなら、別の名前空間にブチ込んだ方が
>いいかなぁとか、色々あるけど、好みの問題だし。
ほんとは「_conv」内で解析した後、別オブジェクトを作って投げる感じにしたかったんだけど、
結構全体で管理する変数もあるし、何回も呼ぶから遅くなるような気がしてやめた。
(全体的にもうちょっとオブジェクト指向っぽくしたいけど、うまいやり方が思いつかんかった)
987 :
929 :2006/07/20(木) 23:23:02
>>979 >他言語と互換を保つってきつくないか?
とりあえず、Ruby、PHPなら同じようなもの組めるかなとか考えて作ってます。
hashとarrayと正規表現使える言語なら、同じ仕様のテンプレートを解析するライブラリ組むのは難しくないと思う。
(互換性ってその程度のことよ)
>他言語に入れ替えられるっていってもそんなに用途なさそうだし。
まぁ、テンプレート共通で言語を変えるってほとんどないだろうから、あんまり意味ないとは思うけど。
>>981 >open IN, '<', $path or die 'file open error'; # 3引数のopen
あ〜、そういえばそんな書式も見たことある気がする。こっちのほうが良いなぁ。
>>983 ごめん。思いっきりバグってた。とりあえずPODの通りくらいには動くようにしてみました(まだバグあると思うけど)
>>986 >たとえば、スクリプトの先頭で「SpTemplate::GLOBAL{'default_escape'} = 'html'」とか書いとけば、
それキモイ。OOスタイルな意味ないじゃん。クラスメソッドで
SpTemplate->default_escape('html');
みたいな呼び出し方を考えるべき。
>>929 ループのデータセットは、配列参照かハッシュ参照なのか。
DBからのレコードセットとかの場合どう対処するの?
全部、メモリにロードしてから出力?メモリ食いそうだな。
まあ、どんなテンプレートエンジン作る際でも問題となってくる部分ではあるんだが。
誰も次スレ立てないのかよつд`)
もう自棄だ。建てて来る
>>967 を1の3段落目の最後にこんな感じで混ぜておくか。
| スレ違いの質問にはスルーか、速やかな誘導をお願いします。
異議があったら準備中に宜しく
埋め
>>991 乙
$self->kakikomi("埋め") while $self->count() < 1000;
$self->kakikomi('埋め') for 994 .. 1000;
うめ
$self->kakikomi("埋め");
ume
998
999
セン
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。