トップページphp
1001コメント371KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/05/31(水) 04:32:28ID:???
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
0667nobodyさん2006/06/20(火) 08:27:29ID:???
>>665
デザインなんてCSSファイル変えるだけじゃん。
テーブルレイアウトやってるならあれだけどね。

>>666
CGI でやること自体見渡しにくいし、何kbのCGIファイル作る気だよ・・・
テンプレートは嫌だって言うし・・・
もう、あれだ、perl より php でやったらw
0668nobodyさん2006/06/20(火) 09:59:21ID:???
>>666
普通に1つのページに対して、1個のCGIにすれば?
というかperlはヒア演算子があるから、既にHTMLが出来てるなら、
#!/dir/perl
print <<HTML;
content-type:xxxx

HTML
で、とりあえずすぐにcgiになる。で、なんか動的要素追加したかったら
前の部分にちゃちゃっと書けば、ある程度拡張できるし・・・
というか何を目指してるのかがいまいち分からない・・・
0669nobodyさん2006/06/20(火) 10:21:31ID:???
質問:
10ページ分のHTMLを一つのCGIファイルにまとめてたい。
でも、大きくなって見通しも悪いのでどうにかしたい。
複数ファイルは死んでも嫌。

回答:
HTML::Templateは変数にテンプレート入れて動かせるよ。
0670nobodyさん2006/06/20(火) 11:14:51ID:???
sub >>669 {
 return >>654
}

これ多分無限ループ
0671nobodyさん2006/06/20(火) 11:57:30ID:???
CGI.pmでさえ、ちょっとしたHTMLを吐けるのに
0672nobodyさん2006/06/20(火) 11:57:50ID:???
HTMLでいいじゃん
0673nobodyさんNGNG
うちはhtmlにjavascript(cgi)入れて
動的なページっぽく見せてるお^^
0674nobodyさん2006/06/20(火) 12:20:28ID:5Ut+7oeu
あるPerlプログラムを実行したら
セグメンテーションエラーになってperl.coreというファイルを吐いて死んでしまいます。
perl.coreというファイルは何に使うのでしょうか?
0675nobodyさん2006/06/20(火) 12:26:38ID:???
651について考証。

[ケース1]
Perlを熟知しているが無意識に「Perl(CGI) > HTML」というイメージにとらわれている。

[ケース2]
Perlはそこそこできるが、HTML::Templateについて実はよく理解していない。

[ケース3]
Perl習いたてで、Perlを万能低級言語であるかのような錯覚に陥っている。

[ケース4]
HTML、CSS、JavaScriptについて実はよく理解していない。

[ケース5]
そもそも、対象としているHTMLソース自体が汚いから誰がやってもまとまらない。
0676nobodyさんNGNG
普通にコアダンプじゃねーの
アセンブラの知識があれば読めます
0677nobodyさん2006/06/20(火) 12:31:44ID:???
[ケース6]
>>675 は、「ケース」「考証」という単語を並べてみたかった。
0678nobodyさん2006/06/20(火) 12:39:34ID:???
651はdbで解決だな
06796742006/06/20(火) 12:49:03ID:5Ut+7oeu
Segmentation fault (core dumped)
とでています。
perl -dでデバッグを行ってみたのですが、ある部分でずっとCPUを100%使い切ったまま止まっているように見えます。

このperl.coreはどのように役立てればよいのでしょう?
ググっても参考になる情報が載っていないので‥
0680nobodyさんNGNG
バグとして報告するか
デバッガ使って読んで下さい
0681nobodyさん2006/06/20(火) 14:11:30ID:T0oahEq/
whileについて質問。

ファイル($log)の中身を1行ずつチェックしながら処理する場合、
open ( FH, $log );
と開いたとして、

@array = <FH>;
$limiti = @array;
while ( $limiti > 0 ) {
 処理;
 $limiti --;
}
とするのと
while(<FH>){
 処理;
}
とするのは同じこと?
どっちでもできるなら後者の方が無駄な変数無い分よろしい?
0682nobodyさんNGNG
前者は一気に読み込んでるのでメモリを多く使用する
0683nobodyさん2006/06/20(火) 14:18:25ID:???
>>681
明らかに前者は分かりにくい。ありえない。メリットも少ないし。
それでもメモリに展開するなら foreach (@array) {} にでもしなよ。
06846812006/06/20(火) 14:32:11ID:???
>>682>>683
後者の方法最近知ったんだけど、それまでずっと前者の方法でやってた・・・orz.

>明らかに前者は分かりにくい。ありえない。メリットも少ないし。
だよね!だよね!ハッキリ答えてもらえてかなりスッキリ。
しかも代替案まで出してもらって恐縮です。

どうもでした!
0685nobodyさん2006/06/20(火) 14:44:49ID:???
コアは食べろ。体にいいぞ。
06866512006/06/20(火) 18:41:22ID:5983Ww81
>>667
CSSレイアウトは正確に書いても正確にレンダリングされるわけではありませんので、
バグ対応を考えるとテーブルレイアウトの方がよほどデザインの変更は私にとっては簡単です。
06876512006/06/20(火) 18:54:06ID:5983Ww81
>>675
ケース6

ある一つのファイルを開けた時の見渡しやすさを確保するには一ページずつhoge.cgiにすれば
.htmlほどではないが準じたレベルで解決。
でもそれだとperlとしてボツ。

要は見渡しやすさと効率と利便性と拡張的と省エネと論理的という理想がそれぞれで
ぶつかりあって毎度動きはするけど納得いかないレベルのものになってしまうのです。

ここらでこのジレンマを解決したいのですが。

strictHTMLと作る側の利便性と効率的且つ拡張的なHTMLは反発しますよね。
そんな感じかもしれません。

m(__)m
0688nobodyさんNGNG
完全CGIのサイトを作ってあげる

高負荷でレスポンス激重or鯖缶から垢デリ

水の泡
06896512006/06/20(火) 19:19:53ID:5983Ww81
>>688
いや。まあかまわないのですがそれも。
作る自体遊びなので。
0690nobodyさん2006/06/20(火) 19:37:08ID:???
a;a1;10
b;b1;10
c;c1;10

と記述したファイルがあるのですが、
例えばb;b1;10の10を11に書き換えたい場合はどうすればいいのでしょうか?
0691nobodyさん2006/06/20(火) 19:40:22ID:???
HTMLのソースが見難いものである以上無理じゃね?
0692nobodyさん2006/06/20(火) 19:45:22ID:???

ファイルじゃなくてどうゆうふうに変数に入れてるのか家




まぁ、データ整理がうまく言ってないだけだと思うけど、たぶん想像だけど無難なトコでは

@file = (
  ['a', 'a1', 10],
  ['b', 'b1', 10],
  ['c', 'c1', 10],
);

って感じでいいのか?
だとしたら

$file[1][2]++;
となる
0693nobodyさん2006/06/20(火) 20:02:06ID:???
>>651のやろうとしている事をやるなら、まずページごとに異なる部分だけを
データファイルなりなんなりで保存しておいて、Apacheのmod_rewrite使って
自動的にCGIにパスを渡すようにするかなー

ってこれブログじゃねえか!
0694nobodyさんNGNG
アロー演算子って省略できたのか、、
0695nobodyさん2006/06/20(火) 20:09:48ID:???
普通にMovaleTypeとどう違うんだろう。
Perlは初心者レベルの俺から見ても、
外部にhtmlの共通部分をテンプレートとして用意しておいて、
コンテンツをそこに流し込むだけでいい気がするんだけど。

>>686
それはCSSを知らないだけじゃない?
よっぽど変なレイアウトをしない限り、CSSハックとかちょっと組み合わせれば
主要ブラウザの表示の差異ぐらい普通に取り除けるぞ。
IE7でちょっと混乱しそうだが、IE7でCSSハックもできるようだから問題ないだろうし。
0696nobodyさん2006/06/20(火) 20:12:07ID:???
>>692
ファイルを読み込んで該当の一行を返し、それを;でsplitしています
ですので、変数としては@datに配列として入っています。
その@datの値を変更したのですが、ファイルに書き戻す方法がわかりません
0697nobodyさんNGNG
joinでおk
0698nobodyさん2006/06/20(火) 20:23:24ID:???
grepとsedを組み合わせることは出来ないですか?
マッチした行をsedしたいのですが
06996982006/06/20(火) 20:25:48ID:???
すいませんsedというか
s///です。
07006922006/06/20(火) 20:32:32ID:???
最初の質問と全然違うじゃねーかよ
>>697でおk
0701nobodyさん2006/06/20(火) 20:42:57ID:???
>>698
そのgrepはどっちのgrep?
コマンドか関数か
0702nobodyさん2006/06/20(火) 21:04:47ID:???
>>694
2個目以降は省略できるぉ
07036512006/06/20(火) 21:04:52ID:5983Ww81
>>691
いえ、htmlのソースは十分見やすいのです。
ただ、それを一つにまとめると長くなって見渡しやすさがなくなるのです。

>>693
昔携帯用サイトをそんな感じで作りました。

>>695
それはCSSに適したレイアウトをしてるからじゃないですか?
デザインレベルの段階で「これはCSSだと云々」と考えたりするのは
個人的には邪道なのです。

例えば写真がページごとに入る枚数が違って、写真と文字の位置の関係や
回り込みの仕方。文字のサイズを変えたときのかわり方、全体の長さによる背景の可変。

そして久しぶりにソース、コードを見た時のわかりやすさ。論理的でありながら効率的で。

長くお邪魔してしまいましたが、スレ汚しになってしまいますのでここらへんで消えます。
ありがとうございました。
0704nobodyさん2006/06/20(火) 21:08:51ID:???
>>696
そこまで分かってて自分で考えられないようじゃ(ry
07056512006/06/20(火) 21:17:35ID:5983Ww81
最後にすみません。

例えば
my $print_value;
if ($form{page} eq "index"){ $print_value = &tag_index}
と本文でやってインデックス用のページを作るサブルーチンから完成したソースを
返してくるとしますよね。

これでページがindexとblogとgalleryと3種類だけでもソースを返してくるルーチンを
3つ同じファイル内に書くと見渡しにくくなりますよね。

最高の解決としては。これはメモ帳レベルの問題なのですが、
同じファイルに書いておきながら

#このルーチンはどういう処理をして何を返すのかを軽く説明
sub tag_index{}  ### このルーチンの中身を見るにはココをクリック!


こんな感じになれば最高なんです。これで10個のルーチンがあっても30行ほどでよくなります。
つまり10個のルーチンが画面内に収まるのですから処理の全体の流れがとてもわかりやすいのです。
これが私のいう見渡しやすさです。

外部にライブラリにすればいい。モジュールにすればいい。
いや。違うんです。ファイルをいくつも作るのはゴミゴミして嫌いなんです。
そして毎度引数を色々渡すのも嫌いなんです。

って、こんなメモ帳を自分で作ればいいのか・・・・・・・
terapadを使ってるのですが、このインターフェースに慣れてるので
サブルーチンはデフォルトでは表示されないとかになればいいのに。行数はもちろんトビトビになる仕様で。
0706nobodyさんNGNG
VisualStudioのエディタはそんな風になってるね
0707nobodyさん2006/06/20(火) 21:19:55ID:???
IDE使えや
0708nobodyさん2006/06/20(火) 21:20:03ID:???
CSSは邪道
ファイル複数にするのも邪道
HTML::Templateは使いたくない

これじゃどうしようもない…。
>>651 は何がしたかったんだろう。
0709nobodyさん2006/06/20(火) 21:22:25ID:???
なんだ、、サブルーチンが折り畳めるエディタはないですか?
っていう質問だったのか。。。
0710nobodyさんNGNG
むしろ適当なCMS使え
0711nobodyさん2006/06/20(火) 21:27:06ID:???
>>703
その辺も普通にCSSで実現できるな。
tableデザインにはそれなりのメリットがあるのはわかるが、
貴方は多分CSSデザインを過小評価しすぎてるよ。
否定するならちゃんと勉強してからがお勧め。
0712nobodyさん2006/06/20(火) 21:27:45ID:???
>>705
>こんな感じになれば最高なんです。
そういう風にコードを書けばいいんじゃね?w
0713nobodyさん2006/06/20(火) 21:33:58ID:???
>>707
あまりの遅さにスーパーライセンスを剥奪されたっぽいから使えん。
07146512006/06/20(火) 21:34:10ID:5983Ww81
>>706-710
そういうエディタもあったのですか。
しょぼい結末になってすみませんです。

>>711
そうでしたか。CSSスレで回答者をしていたころはよく回答者同士で
実装について嘆いたものですが。
1年ほどCSSから離れていたあいだにブラウザに革命でもおきて全て解消されたのでしょうか。
失礼いたしました。
0715nobodyさん2006/06/20(火) 21:35:11ID:???
最後までちゃんと説明出来ない子だったな
07166512006/06/20(火) 21:40:19ID:5983Ww81
ごめんなさいm(__)m
優しくしてくれてありがとうございました。
0717nobodyさん2006/06/20(火) 21:59:49ID:???
651のIDが神がかりな件
0718nobodyさん2006/06/20(火) 22:01:41ID:???
なにがどう神がかりなのか、それを表す正規表現を書いてみてください。
0719nobodyさん2006/06/20(火) 22:14:59ID:???
皆様ありがとうございます。

ファイルを直接書き換えたいので、
open( FILE, ">>./dat/img_data.dat");
while(<FILE>){
s/$FORM{'tmp'}.*/$dat/;
print;
}
close( FILE);
このようにしているのですが、うまく動きません
原因がわかるかたいますでしょうか?
0720nobodyさん2006/06/20(火) 22:19:50ID:???
>>714
奇遇だな。
俺もそのスレの回答者をしていたりする。
0721nobodyさん2006/06/20(火) 22:20:56ID:???
>>714
amazon参考にしたら?w
0722nobodyさん2006/06/20(火) 22:22:13ID:???
お、気づかない間に終わってる。
最後まで言ってることチンプンカンプンだったな。
どうでもいいけど、strict-HTMLとかCSSとかを心底使いこなせるほど覚えたのに、でもテーブルレイアウトのがいい、って言う人はじめて見た。
0723nobodyさん2006/06/20(火) 22:24:28ID:???
>>719
はちゃめちゃ過ぎる
0724nobodyさん2006/06/20(火) 22:27:29ID:???
かじった程度でやってたんじゃね?
CSSハック駆使してその程度のデザインが出来ないっておかしい
amazonがまさにやりたいデザインを実践してるように見えるし
0725nobodyさん2006/06/20(火) 22:31:51ID:???
>>723
すいません、
どこか教えてもらえませんか?
0726nobodyさん2006/06/20(火) 22:32:50ID:???
「ファイルを直接書き換えたい」ってのが既におかしいという話。

>>719
解決法そのいち:(メモリ喰うけど簡単だよ!)
配列に一回読み込んでから好きに書き換え、同じファイルに書き出す

解決法そのに:(メモリ喰わないけどちょっと面倒だよ!)
INとOUT、二つのファイルハンドルを作り、INで一行読んで好きに書き換え、OUTに書き出す
全部終わったら元ファイルを削除し、新ファイルを元ファイルと同じ名前にリネーム
0727nobodyさん2006/06/20(火) 22:36:01ID:???
どこがと言われてもなぁ。

>>719
> open( FILE, ">>./dat/img_data.dat");
追加書き込みで open してるのに
> while(<FILE>){
読もうとしてる。

しかも出力してるのはファイルじゃなくて
> print;
標準出力

そりゃうまく動かない。
というかこれが通るperlって凄いな。ある意味。

0728nobodyさん2006/06/20(火) 22:36:16ID:???
>>726
フォームから受け取ってるんだからそれは出来んでしょ
0729nobodyさん2006/06/20(火) 22:37:42ID:???
>>725
ここを直しても動かないけど、明らかにおかしいところ。

そのいち:
open( FILE, ">>./dat/img_data.dat"); は、追記オープンでしょ。

そのに:
print; は標準出力でしょ。少なくとも print FILE $_; にしないとFILEの意味がない!

と書いてたら>>727に先を越された。

>>728
意味が分からない。
0730nobodyさん2006/06/20(火) 22:39:45ID:???
>>724
なんで amazon? テーブルレイアウトバリバリじゃね?
0731nobodyさん2006/06/20(火) 22:51:15ID:???
レイアウトはリキッドデザインのCSSだよ。
0732nobodyさん2006/06/20(火) 22:54:19ID:???
ゴメ、思いっきり記憶違いだったw
0733nobodyさん2006/06/20(火) 22:56:30ID:???
CSSとかスレ違いどころか板違いなんだから、あまりひっぱりすぎちゃダメだぞ☆

とW3C信者の俺が言ってみる
0734nobodyさん2006/06/20(火) 22:58:09ID:???
商品紹介のとこはリキッドデザインでCSSでfloat指定してるな。
この部分のことかね?
0735nobodyさん2006/06/20(火) 23:21:15ID:???
>>725
File::Inplace 使っとけ。
0736nobodyさん2006/06/21(水) 01:11:43ID:???
話がずれてるので、そろそろ終わりにしようや
0737nobodyさん2006/06/21(水) 12:25:23ID:Jpc8QU0a
・name.txtの中には「名前<>年齢<>性別<>電話番号<>住所」
 という情報が入っている。
・これを「住所」でソートして結果を出力(都道府県別という程度のソート)。
・その際、ブラウザにはフォームで選択した項目の情報だけを吐き出す。

ということをやりたいんですが、

1.openしてwhileで1行ずつ配列(@temp)に入れて処理。
 1-1.フォームで選択されていないものを@tempからspliceして除去。
 1-2.全ての都道府県にあらかじめ番号を付けておき、
   $temp[4]に当たる値とマッチングさせて、unshiftで@tempの頭にその番号を付ける。
 1-3.@newdataに@tempをpushで追加していく。
2.@newdataをソートして出力。

という方法しか思いつきませんでした。
でも、これだと不要な項目をループ処理の中で1回1回チェックしていて
ものすごく無駄なことをしている感じがします。
ファイルを開く前に必要な項目をチェックしておいて、
ファイルを開くときにはそれだけを取り出して処理する、
ということはできないでしょうか?
0738nobodyさん2006/06/21(水) 12:42:09ID:???
「自分で決めた順番でソートする」でググってそこをブックマークしとけ
あと>>681とそれに対するレス見て
07397372006/06/21(水) 12:56:08ID:Jpc8QU0a
>>738
ありがとうございます。
それにしても「自分で決めた順番でソートする」という
ピンポイントな文章で結果が出るとは・・・。
しっかりブックマークして読んできます。
0740nobodyさん2006/06/21(水) 13:10:47ID:QAUqj+Eu
1: 自分はこういう事がしたい。
cvs?といいますか、特定の文字で区切られた(12個)ファイルを読み込んで
二次元配列に入れて、処理をしたい。
2: それでこんな風にやってみたが・・・
for文(i++)で行を読み込んでから、それをさらにfor文(j++)で区切りずつに
わけ、その都度$list[$i][$j]に入れていくようにしました。
3: こんなエラーが出て上手く行かなかった。
12行目に来たところで突然ちゃんと配列に入らなくなってしまいました・・・。
読み込むファイルに原因があるのかと思い、1行から20行まで同じ内容のファイルを作ったのですが
同じように読み込めませんでした・・・。どのようなことが原因と考えられるでしょうか・・・?
0741nobodyさん2006/06/21(水) 13:21:16ID:???
>>739
Perlメモには多くの人がお世話になっているはず。
そのページの他の項目も非常に為になりますよ。

>>740
どんなエラーですか・・・
0742nobodyさん2006/06/21(水) 13:45:57ID:???
>>740
どっかでindex付け間違いと予想。
というか説明わかりにくすぎなので、ソース晒してください。
07437372006/06/21(水) 13:46:58ID:Jpc8QU0a
>>741
これはとても勉強になりそうです。
逆引きなのが助かります。

ところで、>>738にて指摘してもらった箇所を参考にしてみたんですが
>>737に即して書き直すと

$i = 0;
undef(%jusho);
foreach $name ('北海道', '東京', '愛知', '', '大阪', '福岡') {
$jusho{$name} = $i++;
}
@data = map {$_->[0]}
sort {$jusho{$a->[5]} <=> $jusho{$b->[5]}}
map {[$_, split /<>/]} @data;

というふうになるかと思うんですが、「住所」の項には都道府県以下の内容も含まれているので、
この方法で対処しようとすると「住所」の項とは別に「都道府県」の項を設けるか、
住所を「都道府県」と「それ以下」とに分けなければダメですよね?
これはこれで大変便利で、参考になりましたが、
今の記述内容のファイルでは、やはり>>737の方法しかないんでしょうか?
0744nobodyさん2006/06/21(水) 13:49:01ID:???
$&を使ってマッチした部分を表示しようと思ったら、
マッチする前の部分も表示されました。

一応$& $'と書くことで、自分のやりたいことはできてるんですが、
なぜこうなるのか気になります。
何か特別な理由があるんでしょうか?
0745nobodyさん2006/06/21(水) 13:49:48ID:???
>>740
別に20行目とか多次元配列で何か起こるってことはないと思う。
どうみても処理のせいです。
同じように多次元配列(ハッシュ) にいれるモジュール作ったけど、そんなことは起きなかったし。
データが shiftjis で、その特定のマーカーと知らないうちにかぶってるとか。
0746nobodyさん2006/06/21(水) 13:51:14ID:???
>>744
だからさ、そのような挙動をする最低限のソースを載せようよ。
みんなそんなエスパーできないって。
0747nobodyさん2006/06/21(水) 14:00:01ID:???
>>743
応用しようぜw

@data = map {$_->[0]}
sort {$jusho{$a->[1]} <=> $jusho{$b->[1]}}
map { my @tmp = split(/<>/); $tmp[5] =~ /^(.*?)(?:県|都|府|道)/; [ $_, $1] } @data;

まあニュアンスね。試してないけど。
0748nobodyさん2006/06/21(水) 14:00:50ID:???
直そう思ってたのに忘れてたw

sort {$jusho{$a->[1]} <=> $jusho{$b->[1]}}

sort {$jusho{$a->[1]} cmp $jusho{$b->[1]}}
07497372006/06/21(水) 14:20:59ID:Jpc8QU0a
>>747-748
>sort {$jusho{$a->[1]} cmp $jusho{$b->[1]}}
これは「名前」でソートするってことですか?

>$tmp[5] =~ /^(.*?)(?:県|都|府|道)/; [ $_, $1]
この部分が分かりません・・・。
簡単にで良いので解説を・・・。
0750nobodyさん2006/06/21(水) 14:35:16ID:???
ただの正規表現ですがな。
()の中身を取って$1に入れときたいのです。
0751nobodyさん2006/06/21(水) 14:35:26ID:???
>>747
とりあえず「京都府」のときに困りそうなコードだと指摘しておこうw
0752nobodyさん2006/06/21(水) 14:44:47ID:???
京都は意地汚い奴が多いから捨ててもいい。
07537372006/06/21(水) 14:54:48ID:Jpc8QU0a
>>750
解説ありがとうございます。

とすると、
>>747の処理をして一旦「都道府県」だけを取り出して>>743の処理をする
という解釈で良いんでしょうか?
それとも>>743のコードの6行目以下を>>747のニュアンスのように書き換える
ということなんでしょうか?

京都府に関しては岸部四郎に免じてお許しを。
0754nobodyさん2006/06/21(水) 15:02:29ID:???
東京は困らないんですか?
0755nobodyさん2006/06/21(水) 15:11:00ID:???
困らないよ。
07567372006/06/21(水) 15:19:55ID:Jpc8QU0a
>>753については後者ですね・・・くだらないことを聞いてすみません。
0757nobodyさん2006/06/21(水) 15:26:09ID:???
もしSJISだったらいくらなんでもエスケープくらいしてねw
0758nobodyさん2006/06/21(水) 15:27:40ID:???
流れはutf8なんでしょ?
0759nobodyさん2006/06/21(水) 15:33:54ID:???
utf8 は便利だよね。
0760nobodyさん2006/06/21(水) 15:40:10ID:???
既存コードがeuc-jpで、HTMLとして送り出すときはiso-2022-jpにしてあるからなぁ。。。
0761nobodyさん2006/06/21(水) 15:42:59ID:???
なんでわざわざjis w
0762nobodyさん2006/06/21(水) 15:47:58ID:???
昔は(ってもう10年以上前か)、ネット上を流すにはJIS、つまり7bitで、という話があったのよ。
HTTP上の問題は今になって考えればなかっただろうが。
UAでの解釈問題はあるかもな。

今の出力コードでおすすめは何?
c-HTMLではSJIS onlyなi-modeも拡張されたの?
0763nobodyさん2006/06/21(水) 15:50:04ID:???
メールは7bitだけど、HTTPで7bitなんて聞いた事無いなぁ
07647442006/06/21(水) 15:51:28ID:sa5CDJCk
>>746
すみません、こんな感じです。

$euc_regex = "(?:$ascii|$two_bytes|$three_bytes)*?";
#検索
while (chomp ($_ = <IN>)) {
 if (/<DOCID>(.+)<\/DOCID>/) {
  $docid = $1;
 }
 if (/<TITL>(.+)<\/TITL>/) {
  $title = $1;
 }
 if (/<AUTHOR>(.+)<\/AUTHOR>/) {
  $author = $1;
 }

 if ($form{'tosho1'} eq "all") {
  if (/^$euc_regex($key1)/) {
   $found++;
   print "ID=$docid TITLE=$title AUTHOR=$author<BR>\n";
   print "$& <BR>\n<BR>\n";
  }
 }
}
07657442006/06/21(水) 15:52:07ID:sa5CDJCk
挙動はたとえば石で検索した場合、
………石
のように表示されます。

質問は「なぜ$&を使ったのにマッチした部分以前も表示されてしまうか」です。

最低限がどれくらいかわからなかったんですが、
もっとソースの大部分を書いたほうがいいでしょうか?
0766nobodyさん2006/06/21(水) 15:55:04ID:???
なるほ(´・ω・`)
メールも7bitだけだしなー。

携帯のブラウザのプログラマはほんと何考えて作ってんだと思うよ。
■ このスレッドは過去ログ倉庫に格納されています