Perlコーディング初心者質問スレ Part 40

このエントリーをはてなブックマークに追加
952nobodyさん:05/03/08 21:34:43 ID:???
>>946
3番目
漏れは矢印あったほうが直感的に理解しやすい
953nobodyさん:05/03/08 22:07:09 ID:???
簡単なディレクトリ表示プログラムなんですが
use File::Find;
$dir = "C:\\WINDOWS\\Favorites";
find(\&print_file,$dir);

sub print_file{
print "$File::Find::name\n";
}

C:\WINDOWS\Favorites/test.html
みたいに表示されてしまうんですが、
C:WINDOWS\Favorites\test.html
みたいに表示したいんですけど
どうしたらいいんでしょうか?
954nobodyさん:05/03/08 22:19:35 ID:???
s//g
955nobodyさん:05/03/08 23:02:12 ID:???
('A`)
956nobodyさん:05/03/08 23:12:33 ID:???
"('A`)" =~ m('A`)m
957nobodyさん:05/03/09 01:48:46 ID:???
>>953
File::Spec->canonpath($File::Find::name)
958nobodyさん:05/03/09 03:18:19 ID:???
タグ除去で
$aaa =~ s/<.*>//i;
にしてたのですが、
<TD>あああ</TD>
こういう1行に2つ以上タグがあるところは除去されてしまうようです
ちゃんと<TD>あああ</TD>⇒あああにするにはどうすればいいですか?
959nobodyさん:05/03/09 03:22:40 ID:???
>>958
non-greedy マッチで
960nobodyさん:05/03/09 03:29:36 ID:???
>>959
ありがとうございます、できました
しかしレスはやいっすね・・・
961nobodyさん:05/03/09 03:39:03 ID:???
>960
ちなみにどうやったか書いてって〜
962nobodyさん:05/03/09 06:39:54 ID:???
>>947
ヘッダを出力する前にプロセスが終了してる。
理由としては
1. HTTPヘッダを出力していない。
2. ヘッダを出力する前にエラーが起きている。
のどちらか。
1.は出力するように修正する。
2.はエラーログにperlのエラーが出力されているので、それを見て修正。

Apacheの場合、改行二回するだけでも、
デフォルトのcontent-typeを吐いてくれる。
(httpd.confをいじってなければtext/plain)
963nobodyさん:05/03/09 15:42:37 ID:TPYzASqD
PHPでいう、
<?
require ("./test/index.html");
?>
これをperlで再現したいのですが、
是非方法を教えて頂けませんでしょうかorz
964nobodyさん:05/03/09 15:51:43 ID:???
>>963
require "パス";
965nobodyさん:05/03/09 15:53:29 ID:???
>>958
アホ
$value =~ s{<[^>]*>}{}g;
966nobodyさん:05/03/09 15:53:39 ID:???
>>963
PHPくだスレでのレスは放置かYO。
それに、
「PHPではrequireはコレコレこういう機能がありますが、
Perlでそれを実現するにはどうしたらいいですか?」
って感じの質問の仕方が真っ当だと思うが。

967nobodyさん:05/03/09 16:00:05 ID:TPYzASqD
>>966
すいませんでしたorz


あと、Perlでreqireを使ってphpを呼び出すことは可能でしょうか・・・?

require "./test/index.php";
print index("$index");

これはphpでrequireを使ってindex.phpを呼び出したときの成功ソースです
perlでは失敗しましたorz

ちなみにindex.phpの構造はこんなかんじです
<?
function index($index) {
return "hello!";
}
?>
968nobodyさん:05/03/09 16:03:53 ID:???
次の質問どぞー
969nobodyさん:05/03/09 16:12:05 ID:???
>>967
おめえはPerlの解説サイト見るって事はできねえのか?
requireがどういう処理をするか調べて自分で考えろよ。
970nobodyさん:05/03/09 16:13:09 ID:???
>>967
できるわけねえだろ糞ボケ
971nobodyさん:05/03/09 16:15:25 ID:???
>>967
お前にはPerlは無理だ
PHPならできるかもしれないが
972nobodyさん:05/03/09 16:38:24 ID:???
出来るに決まってんだろボケナス
973nobodyさん:05/03/09 16:42:30 ID:bpuh5/Rp
現在、下のようになっています

open new, '>new.txt';

@data = split /\t/;

if($data[0] eq 'kawagoe'){
print new "$_";
}


これですと、データを全て新ファイルに記憶してしまいますが、
data[2](タブ区切り三つ目のデータ)だけを省いて記録するには
どのように書き換えたらよいでしょうか?
974nobodyさん:05/03/09 17:05:05 ID:???
975nobodyさん:05/03/09 17:25:19 ID:ox3iJUQY
現在、perlでけっこうな数のスクリプトがあり、これにphpで発行した
セッションを組み込もうと思っています。
phpで発行したセッションはperlからは利用できないのでしょうか?
976nobodyさん:05/03/09 17:46:10 ID:???
>>975
しつけえなこいつ

セッションファイルを共有すればいいだけだろ。
そんなこともわからんのか。
977nobodyさん:05/03/09 17:59:25 ID:???
セッションの意味をわかってないんだろうよ。
こういう馬鹿はほっとくに限る。

次の質問どうぞ↓
978nobodyさん:05/03/09 17:59:25 ID:???
979960:05/03/09 18:59:20 ID:???
>>961
$aaa =~ s/<.*>//i;

$aaa =~ s/<.*?>//i;
たったこれだけでした
980nobodyさん:05/03/09 19:07:34 ID:???
>>972
split せんでも、それくらいなら
s/^([^\t]*\t[^\t]*)\t[^\t]*/$1/;
とかでどうかな。

データが長い上何回も繰り返すんだったら、
index と substr でも組み合わせたらいいかと。

[2]だけじゃなく、何個も消すのだったら、@data を splice して join すればいいよ。
981980:05/03/09 19:08:48 ID:???
あー >>973 だわ、ごめん。
そろそろ1000いくね。
982nobodyさん:05/03/09 19:09:56 ID:???
カンマ区切りのファイルから検索します。

@csv = <CSV>
foreach (@csv){
 処理
}

この処理で
・splitで分解してeq
・正規表現でマッチ

どちらが早いですか?
983nobodyさん:05/03/09 19:39:04 ID:???
index
984nobodyさん:05/03/09 19:59:06 ID:???
>>982
そういうのは試した方が早くね?
データによってどれが早いか変わるようなケースも有り得るわけだし。
985nobodyさん:05/03/09 20:03:24 ID:???
>>979
だからそれじゃあタグの途中で改行してる場合に困るだろ
986nobodyさん:05/03/09 20:06:10 ID:???
>>982
Perlで処理効率云々を言ってもなぁ
それもCGIレベルの話でどちらが云々いうなら、画像サイズなんかを極限まで
落としたほうがよほど効果的だよ。
987nobodyさん:05/03/09 20:48:49 ID:???
>>973
print new @data[0..1, 3..$#data];
988nobodyさん:05/03/09 21:05:13 ID:???
いろんな箇所でつかいたい文があったので

$live = '<a href=\"*************\">現行スレ</a><br>':

〜〜〜

print "$live";

このようにしたのですがエラーがでます
なにか間違えたりたりないとこがあったらご指摘お願いいたします
989nobodyさん:05/03/09 21:07:40 ID:???
>>979
<tag attr=">">
このタグはちゃんと除去できるかな?
990nobodyさん:05/03/09 21:08:38 ID:???
コロン
991nobodyさん:05/03/09 21:10:23 ID:???
>>988
文の最後はセミコロン。
992nobodyさん:05/03/09 21:12:18 ID:???
>>988
予断ですが。
シングルクォーテーションの中でダブルクォーテーションはエスケープする必要ないし、
変数1つを出力するのに、ダブルクォーテーションでくくる必要もないです。
993nobodyさん:05/03/09 21:15:04 ID:???
>>989
そんなのは<tag attr=>>を除去できるかと言っているのと同義。

$aaa =~ s/<[^>]+?>//is;

でFA?
994nobodyさん:05/03/09 21:21:31 ID:???
>>993
アホはだまってなさい。
995nobodyさん:05/03/09 21:22:52 ID:???
っていうか、パターンにアルファベットがあるわけでもないのにiオプションですか。
996nobodyさん:05/03/09 21:29:52 ID:???
そんなことはもうどうでもいいから次スレ。
997nobodyさん:05/03/09 21:33:23 ID:???
軽やかに997ゲット
998nobodyさん:05/03/09 21:35:47 ID:???
>>995
さらに言えばsもいらんけどな
999nobodyさん:05/03/09 21:38:34 ID:???
$aaa =~ s/<.*?>//g;
$aaaにはタグを除去したいHTMLテキスト全体が入っているものとする。
また、HTMLテキストのコメント内および引用符でくくられた属性内には
>を含まないものとする。
1000nobodyさん:05/03/09 21:45:08 ID:uon8ZypZ
せん!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。