>>607 それよりも、自分で書いたコードが半年後に読めなくなる頭脳の方を
問題にすべき。
609 :
デフォルトの名無しさん:2005/05/14(土) 03:44:25
>>607 逆コンパイルできてしまう開発環境よりいいんじゃね?
611 :
デフォルトの名無しさん:2005/05/14(土) 03:46:24
>>607 15年前に書いたコードも普通に読めますが。
612 :
594:2005/05/14(土) 03:57:41
自己解決しました。失敬。
>>606 何がいけないのかわからなかったら
正規表現のグループ化について調べると良いと思うよ
614 :
デフォルトの名無しさん:2005/05/14(土) 07:13:42
_,,−-、
_,, .. _,,-‐'": : : : : :゙ヽ
r‐'´: : : : : : : : : : : : : : : : ` 、
/: : : : : : : : : : :,、: : : : : : : : : :_:ヽ、
|_: : : : : : : : : / \: : : : : : : :ヽ、
{: : : : : : : : l' ヽ、: : : : : :{、
l__: : : : : : :i、 `丶: : t‐`
/, ヽ: : :/´ |: : : !'
{ ru l': :/ ,/二丶、 }: :,,|
_`iヽr‐!:丶 'tェッiヽ-'' , '‐-、/:/
: :丶t': : : ヽ 'xェァノ:/
: : : : : : : : : : i、 }
: : : : : ',: : : : ´ i! _ノ
: : : : : ヽ : 、_ `゙;;;;> .,r'/
: : : : : : \ - ,,`''‐--//`丶、.
: : : : : : : : :`-,; " ̄ /: : : : : :\
: : : : : : : / /: : : : : : : : : :',
: : : : : : :{ ,. -‐ ": : : : : : : : : : : :
太宰治先生が
>>605を見て人間の醜さを見出したようです。
615 :
デフォルトの名無しさん:2005/05/14(土) 09:30:34
自分で書いたデタラメプログラムがコンパイルできなかったので、
計算機センターのCコンパイラが壊れているとクレームをつけてき
たバカ学生を思い出したぜ。
いつの時代だよw
今でもいるぞー。
間違ってないんですけどって奴。
そっちじゃねーよw
>>615 思い出されたぜ。しかも2回やったぞw
10年前だがな〜。
620 :
デフォルトの名無しさん:2005/05/14(土) 15:42:51
open INPUT, "<test.txt" ;
while ( <INPUT> ) {
chomp ;
print "$_\n" ;
}
close INPUT ;
exit ;
このようにすると、ちゃんと一行読み込んでくれるのに、
open INPUT, "<test.txt" ;
<INPUT> ;
chomp ;
print "$_\n" ;
close INPUT ;
exit ;
のようにすると、一行読み込んでくれないのはどうしてなのでしょうか?
<>を使い、代入する変数を省略した場合、デフォルトで、$_ に保存されると
本で読みました。これは while の中だけで有効な話なのですか?
621 :
デフォルトの名無しさん:2005/05/14(土) 15:51:47
622 :
596:2005/05/14(土) 15:58:47
日本語PATHについて質問してた者です。あれからネットを調べまわった結果
同じようなケースが1つ見つかりました
内部で勝手にUTF8に変換されてしまうので、shiftjisに文字列をエンコードしなければ成らなかったようです
と言っても理解できてませんけど
use encoding "cp932";
use Encode;
$inputtext = "c:/perl/test/日本語/in.txt";
$inputtext = encode('cp932',$inputtext);
utf8::decode($inputtext);
print $inputtext;
open (IN, '<', $inputtext);
2chの板/スレ/投稿一覧を取得するようなモジュールって既にありますかね?
自作してもいいんですが、車輪の再発明もなんなので…。
どっかにあったが忘れた
while(<>) は for(;<>;) と等価ですか?
これはいくらググっても見つかりません。不安です。
>>620 <STDIN>は標準入力から1行読む
全部読んで$_に代入する訳ではない
ただし配列に代入する場合は別
ラクダ嫁
>>625 whileとforの構文の一般的な話ならperlsyn(1)のFor Loopsという
見出しのところに書いてあるし、行入力演算子を条件のところ
に書いたときの特別な振る舞いを気にしてるならperlop(1)の
I/O Operationsのところに書いてある。
>>620 $_に代入してくれるのはwhileとfor(;;)の条件のところに
書いたときだけ。
詳しくは628にもあるがperlop(1)のI/O Operationsのところ
を読んでくれ。
>>626-628 レスありがとうございました。
ラクダ本というものの存在をはじめて知りました。
お金ができたら買ってみようとおもいます。
失礼
>>629 さんまででした。
本当にありがとうござました!
utf-8でかかれたテキストファイルに対して処理を行うのに、
改行コードが邪魔だったので置換して削除しようとしたのです
が、うまくいきません。改行コードはそのまま残っています。
以下、失敗時の対象コードです。
$hoge =~ s/\x0D\x0A//g; #gいらないかもしれませんが
\r\nもやりましたが結果は同じでした。
テキストエディタで同様の文字コードで置換するとうまくいく
のですが、、、
解決方法よろしくお願いいたします。
> Perlメモ
635 :
デフォルトの名無しさん:2005/05/15(日) 23:18:56
お分かりになる方、お願いします。
携帯用のページに perl で post したいんです。
HTMLのフォーム使ってではなく、直接、
http://test.com/cgi/post.cgi?id=123&pas=456 ・・・という具合に、送信したいんですが、携帯用のページにIEから、上記のようなアドレスを
送信すると、エラーになります。
perl の仕様? が違うのだと思いますが、どのようにすればうまく解決できるのでしょうか。
携帯用だとページが軽いので、可能なら助かります。
質問の文章の程度からしてお前には無理。
http://www.template-toolkit.org/ Version 2.14 Released について
perl の use tmpletes (Template Toolkit)を使いたいんだけど、
使用先がレンタルサーバで、tellnetがつかえないく root 権限もないからインストールができない。
自分の /var/www/cgi-bin/lib/ にアップしたいんだけど、どのディレクトリーをアップすればいいの?
この上なく釣りにしか見えんが
lib/Template 以下を lib にぶちこんでみれ
640 :
デフォルトの名無しさん:2005/05/16(月) 20:55:30
perl, rubyとなるとsapphireとかtopazとかありそかもな?
>>639 ありがとう。動いたよ。
カキコしてから、CGIじゃんって、気がついたよ。ごめん。
template toolkit って HTML::template より便利だ。
質問があります。
相対パス表記である './' や '../' を含んだパスからそれらを出来る限り取り去りたいのですが、
そのような作業をやってくれるモジュールなり、簡単な正規表現の書き方なりあれば教えてください。
↓自力で一応それっぽい正規表現を考えてみましたが、3〜4行も打たねばならず腱鞘炎になりそうです_| ̄|○|||
my $path = 'hogera/../.././././pukya/../hell/o/world';
print "$path\n";
$path !~ m/\.{3,}/ or die; # 3 以上の '.' の連続をはじく (assert)
$path =~ s|([/\\]\.{1,2})$|$1/|; # 末尾が '/.' または '/..' ならディレクトリ
$path =~ s|(?<=[/\\])\.[/\\]||g; # './' の除去
$path =~ s|[^/\\]+[/\\]\.\.[/\\]||g; # 'hoge/../' の除去
print "$path\n";
あと、このような処理はありがちに思えるので、それっぽい名前とかありそうな気がするんですが、どうなんでしょうか・・・?
>>643 $cpath = File::Spec->canonpath( $path ) ;
がそのものずばりですた。
ありがとうございます!
こういう処理は、正準化ちゅうんですね。
645 :
デフォルトの名無しさん:2005/05/18(水) 12:13:20
Windows上で動く簡単なものを作成したのですが
その際に使用するモジュールをppm・installで入れようとしたのですが
入れようとするとno suitable installation taaget found for package と出てきます。
これは何が原因なのでしょうか?
わかる方おられましたらアドバイスいただければと思います。
>>645 no suitable installation target found for package
↓
target
になおしてぐぐればでる。
647 :
デフォルトの名無しさん:2005/05/18(水) 21:49:34
らくだ本を見ながらテキスト処理のスクリプトをいくつか書いてるんですが、
GUIのデバッガってないですかね?
同じスクリプトをWindows2000、SuSE Linux9.1、Solaris8の3つで
動かしているので、どのプラットフォームのでもOKです。
>>647 perlのdebugオプションつけたんじゃだめ?
emacsでもあったよな。
なんだ、GUIか(スマソ
651 :
647:2005/05/19(木) 00:09:13
>>648-650 レスどうもです。
dddをインストールしてみましたが、ちょっと使いにくかったので
Eclipse+EPICの方を試してみようと思います。
マルチ+スレ違いの質問をしてしまう私をどうか許してください。
WebProgのPHPくだ質スレにて
print <<"ここから";
$info['name'] = 'taro';
$str = '%db{name}';
$ret = preg_replace("/%db{(.*?)}/", $info[$1], $str);
printf("%s", $ret);
このような感じで「taro」と表示するのを期待しているのですがエラーが出てしまいます。
シングル、ダブルクォーテーションで囲っても期待通りの動作はしませんでした。
どのような方法を使えば「taro」と表示出来ますでしょうか。
それから
foreach (range(1,5) as $key) {
なんとか $i;
print ++$i;
}
print $i;
この結果が「11111」になるよう$iを局所変数にするような関数ってありますか?
ここから
という質問をしたのですが問題のPHPコード同様、期待値を得ることが出来ませんでした。
Perlだったら
$str =~ s/%db{(.*?)}/$info{$1}/;
my $i;
でいけるのですがPHPの場合はどう記述すればいいのでしょうか。
windowsで、一個上のディレクトリに移動したいときはどうするんでしょう?
chdir ( ..\ );
では、うまくいかないんですが。。。
../