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

【Perl 】初心者コーナーPart7

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい01/09/12 13:04ID:???
いらっしゃーい、perlのコーディングで困ってる人のスレです。

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

1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。

参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://corn.2ch.net/test/read.cgi?bbs=php&key=988809842&ls=50
CGIの質問はこちら【CGIだけど、なんか質問ある?part3】
http://corn.2ch.net/test/read.cgi?bbs=php&key=988727833&ls=50

過去ログ、その他の役立ち情報は>>2-5を見よう。
0751名無しさん@お腹いっぱい。01/10/11 16:48ID:kMiBAPJ6
>>750
えーと、「プロトタイプを有効にするには、BEGINブロックの中で
エリアスを作るしかない」つーことですか?

あ。念のため今perldoc perlsub見たら、そう明記されてたっす。
知らなかったー。プロトタイプあんま使わないから。

要するにプロトタイプ付きの「ローカル関数」は作れないってことなのか。
075275101/10/11 16:51ID:???
perldubじゃねーや。perlrefの"Function Templates"のとこでした。
0753名無しさん@お腹いっぱい。01/10/11 20:27ID:???
プロトタイプの'&'って使ったことある人いる?
なんかサンプル見るとtry〜catch構文とか作ってて
いろんな意味でスゲーんですけど。
俺は一生プロトタイプ'&'を自分で使うことはあるまい。
0754nullsann01/10/11 23:27ID:S31Vh/vQ
複数のファイルを何度もOpen/Closeさせてるんですが、
ファイルロックは一度で良いんでしょうか?

sub filecheck{
&lock;#
open IN,"$logfile";
#syori
close IN;

open FP,"> $logfile"
#syori
close FP;
.
.
.
.
&unlock;
}

mkdirのロック方式使ってるんですが・・・。
0755名無しさん@お腹いっぱい。01/10/12 00:30ID:???
>>754
一度でよし。
0756名無しさん@お腹いっぱい。01/10/12 01:31ID:kGkVgeeA

if ($ENV{'HTTP_REFERER'} ne 'http://許可する.com') {
print "Location: http://ばいばい.com\n";
print "\n";
}
にしたのですが、閲覧を許可する参照元をもう一つ増やすにはどうしたらいいですか?

if ($ENV{'HTTP_REFERER'} ne 'http://URL1'|'http://URL2')
だとうまくいきませんでした
0757名無しさん@お腹いっぱい。01/10/12 01:54ID:???
>>756
許可するのが2つぐらいなら
「URL1ではなく、URL2でもなければ、ばいばい」というふうに
素直にコーディングするといいです。

if ($ENV{略} ne 'URL1' and $ENV{略} ne 'URL2') {
・・・
}
0758名無しさん@お腹いっぱい。01/10/12 10:18ID:UFajsOUw
cgiからcgiを作るのを習作していますがエラーとなってしまいます。何か
根本的に違うのでしょうか?お教えください。

#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD><TITLE>CGIテスト</TITLE></HEAD>\n";
print "<BODY>\n";
#
print "<form name="form1" method="post" action="">\n";
print "<input type="checkbox" name="checkbox" value="checkbox">\n";
print "</form>";
#
print "</BODY>\n";
print "</HTML>\n";

__END__
0759名無しさん@MZ-200001/10/12 10:21ID:???
「cgiからcgiを作るのを習作しています」が根本的にワケワカラン(w
とりあえず

print "<form name="form1" method="post" action="">\n";
print "<input type="checkbox" name="checkbox" value="checkbox">\n";

この二行がだめ。
0760名無しさん@お腹いっぱい。01/10/12 10:24ID:???
(´-`).。oO( " -> \" ・・・・)
0761名無しさん@お腹いっぱい。01/10/12 10:39ID:DN2jVK/o
('-').。oO
0762名無しさん@お腹いっぱい。01/10/12 11:11ID:VXGFJvh.
print "<form name=\"form1\" method=\"post\" action=\"\">\n";
print "<input type="checkbox\" name=\"checkbox\" value=\"checkbox\">\n";

だね。
0763名無しさん@お腹いっぱい。01/10/12 11:16ID:VXGFJvh.
一個抜けた。
print "<input type=\"checkbox\" name=\"checkbox\" value=\"checkbox\">\n";
鬱だ。
0764名無しさん@お腹いっぱい。01/10/12 11:20ID:???
素直にシングルクォートかひあどきゅめんとを・・・・・qqでもいいけど。。
0765名無しさん@お腹いっぱい。01/10/12 11:39ID:???
>>762-763のような誤りを避ける為に
qq{<input type="checkbox" name="checkbox" value="checkbox">\n};
まぁ>>758、お前はマトモな本で基礎を勉強してから出なおしなさいってこった。
0766名無しさん@お腹いっぱい。01/10/12 11:43ID:uPcFyHO2
>>756
ロジックを1行に書くのって頭が混乱しない?
効率悪いかも知れないけど、こんな関数を作るほうがいいと思う。

if (! &is_good_referer()) {
:
}

sub is_good_referer {
 my @kyoka = ('URL1', 'URL2');
 foreach my $url (@kyoka) {
  if ($ENV{HTTP_REFERER} eq $url) {
   return 1; # 許可するURLのどれかに一致すれば1を返す
  }
 }
 return 0; # どれにも一致しなければ0を返す
}
0767業01/10/12 11:57ID:e.iu2Egs
ネストは見る場合は大事と思われ。
ただ、空白2文字はちょっとな。4文字は欲しい。
0768名無しさん@お腹いっぱい。01/10/12 12:13ID:Qk0xmYmc
何故にコマンドラインからだとファイルの
扱いができないのでしょうか?
cgiとして動かすか、実行形式にするしかないのですか?
0769名無しさん@お腹いっぱい。01/10/12 12:18ID:ZYB0SiF6
>>768
意味わからん…。
もっと具体的に言ってくれ。
0770名無しさん@お腹いっぱい。01/10/12 12:19ID:???
>>767
ラリーヲールが2文字推奨なんだっけ?
0771名無しさん@お腹いっぱい。01/10/12 12:20ID:Qk0xmYmc
>769
即レス感謝です。
わかりずらいですね。DOS窓からスクリプト実行すると
file openとかしても読み取ってくれないのです。
これは何故でしょうか?
0772名無しさん@お腹いっぱい。01/10/12 12:26ID:???
Winで *.pl は実行できません。
0773名無しさん@お腹いっぱい。01/10/12 12:27ID:ZYB0SiF6
>>771
ありがちなのは、パス付きのファイル名を書くとき、
ダブルクォート文字列の中で"\"を"\\"としてないこと。

× "c:\hoge\fuga.txt" ←これはだめ
○ "c:\\hoge\\fuga.txt" ←これはよし。
○ 'c:\hoge\fuga.txt' ←シングルクォート使ってもよし
○ "c:/hoge/fuga.txt" ←"\"じゃなく"/"使ってもよし
0774名無しさん@お腹いっぱい。01/10/12 12:29ID:???
>>771
パスが違うかパーミッションの問題じゃねーの。
とりあえず
$filename = "moe/moe.txt"
open(F, $filename) or die "$!: $filename";
としかて、なんで失敗しているのか確認スレ。
0775名無しさん@お腹いっぱい。01/10/12 12:37ID:???
>>753
難しく考え杉じゃない。
わかれば簡単。で、サンプル

sub synchronized(&) {
  my $code = shift;

  lock();
  $code->();
  unlock();
}

synchronized {
  # >>754から
  open IN,"$logfile";
  #syori
  close IN;

  open FP,"> $logfile"
  #syori
  close FP;
}
077677501/10/12 12:40ID:???
すまん。セミコロンわすれた。

synchronized {
  #...
};#<-これ
0777名無しさん@お腹いっぱい。01/10/12 13:23ID:PeaA6TSM
相対パスでやってるんですけど、ダメなんでしょうか?
or die "$!: $filename";
いれてやったらファイルみつからんて言われちゃいました.
0778名無しさん@お腹いっぱい。01/10/12 13:34ID:???
あれ?絶対パスでもダメだ。
0779名無しさん@お腹いっぱい。01/10/12 13:50ID:???
あれれ?簡単なの作ってテストしたらできた。
御迷惑おかけしました。
どうもありがとうございました。
0780名無しさん@お腹いっぱい。01/10/12 14:02ID:PeaA6TSM
$var = 'myvar';
$sym = mypack::$var;
は、
$var = 'myvar';
$sym = "mypack::$var";
とは違うらしいのですが、何が違うのでしょうか?
0781777-78001/10/12 14:45ID:???
うまく動作しない…。何故だぁ。
DOS窓だと
open(MAIL, ">>$docomo");って
できないんですか?追記のはずが最初の一回目しか
書き込めんですヽ(`Д´)ノ
0782名無しさん@お腹いっぱい。01/10/12 14:49ID:???
すみませんまたミスってました。
なんか私の恥じをさらすスレと化してしまい
申し訳ありません。
ごめんなさい。ごめんなさい。ごめんなさい。
0783JAPU@見知らぬ国のトリッパー ◆dcddJAPU 01/10/12 14:51ID:???
前者はコンパイルエラーになりますが、後者はなりません。
...という違いです。
0784名無しさん@お腹いっぱい。01/10/12 14:51ID:???
>781-782
ミスるのはいいから、なにをどうミスっていたか書いておいてほしい。
それを見た他の初心者が同じ事をしないですむ可能性があるんだから。
0785名無しさん@お腹いっぱい。01/10/12 15:29ID:???
>784
誰もしないようなミスだったんで、、、
openする前に$docomoをforeach文で上書きしまくってました。
ちなみに相対パスだとオープンできないってのは
よくわからないままです。
他はみなさんの言うと通りやったらできました。
0786名無しさん@お腹いっぱい。01/10/12 15:33ID:???
>JAPUさん
780に対するのですね。ありがとうございます。
ただそれだけなんですか。なんか深い意味があるのかと
思っちゃいました。
0787名無しさん@お腹いっぱい。01/10/12 15:35ID:???
相対パスってスクリプトからの相対パス?
実行時のカレントディレクトリとスクリプトがおいてあるディレクトリは同じ?
0788名無しさん@お腹いっぱい。01/10/12 15:53ID:???
スクリプトからの相対パスです。
実行時のカレントディレクトリはスクリプトの
ある所になるのでは無いのですか?
0789名無しさん@お腹いっぱい。01/10/12 16:05ID:???
スクリプトが無い場所から起動してみればわかると思うけど、
実行時のカレントディレクトリが基準になるのでは。
0790名無しさん@お腹いっぱい。 01/10/12 16:08ID:???
このスレでやってたよ、ログ探してみ、WIN、UNIXともカレントが正解。
0791名無しさん@お腹いっぱい。01/10/12 16:46ID:???
相対パスでできました。
command.comからの相対パスなんですね。
なるほど。ありがとうございます。
0792名無しさん@お腹いっぱい。01/10/12 20:37ID:???
>>791
> command.comからの相対パス
何故そう解釈出来る?
command.comからの相対パスだと、基準はC:\Windowsになってしまうでしょ。
実行時のカレントディレクトリだぞ・・・
0793名無しさん@お腹いっぱい。01/10/12 22:52ID:.7AHiXCo
え?え?
違うんですか?実行時のカレントディレクトリというのは
どういう事ですか?
ちなみにcommand.comからの相対パスで
やったらうまくいったものでして。。。
0794名無しさん@お腹いっぱい。01/10/12 22:55ID:???
駄目だコリャ
0795名無しさん@お腹いっぱい。01/10/12 23:16ID:???
>>793のホームディレクトリ=C:\
0796名無しさん@お腹いっぱい。01/10/12 23:45ID:???
ぼほほ〜〜(´Д`;)
見捨てられちゃったのですか?
意味が…わからん…。
0797名無しさん@お腹いっぱい。01/10/13 00:16ID:???
s{command.comからの相対パス}
{command.comというファイルが置かれている場所からの相対パス}
こう考えなさい。
0798名無しさん@お腹いっぱい。01/10/13 00:37ID:???
???(´Д`;)
ありがとうございますです。
とりあえず勉強不足過ぎという事ははっきりしました。
まぁ前からわかっていましたが…。

今日一日中このスレに常駐していた気がする。
勉強になるなぁ〜。
0799名無しさん@お腹いっぱい。01/10/13 19:06ID:Z60DF3aY
http://bulknews.net/lib/archives/Image-HTML-0.01.html

これすごすぎ、gifファイルをHTMLだけで表現している。
あんまデカイ画像するとブラクラになりかねんが、
0800名無しさん@お腹いっぱい。01/10/13 20:38ID:???
>>799
うひひ(w
こんな感じになるのか?
ttp://hi.sakura.ne.jp/~okada/table/mario_bs2.html
0801名無しさん@お腹いっぱい。01/10/13 21:10ID:rwndiC8E
>>800
そこはまだ同色のドットをつなげたりしてるからいいっすよ。
799のやつは全部1x1ドットに分解してた(呆

#これ見るためImage::Magickインストールしちゃったよ
0802名無しさん@お腹いっぱい。01/10/13 21:16ID:???

DHTMLは良いなあ・・・・
激しく無意味でイイ(・∀・)♪!
080379901/10/13 23:07ID:Z60DF3aY
すごいけど、実用性無いよね。
遊び以外で使うこと無いような。、
080479901/10/13 23:29ID:Z60DF3aY
http://r1.ugfree.to/~user03/image2html.html
試しに、某板看板をしてみました。
にしてもサイズがでかくなりますね。
33KB->3767KB になちゃう。
0805   01/10/14 06:40ID:9DG4zskV
困っております。
WIN98でapache web server と active perl使ってます。
htdocsフォルダから、とあるcgiファイルをディスクトップ上に移動して、
書籍のサンプルcgiファイル(←移動させたcgiファイルと同じもの)
をhtdocsフォルダにコピペしました。
でそのコピペしたcgiファイルを実行すると、ファイルのダウンロードの画面がでてしまい、
結局そのプログラムは実行されませぬ。
なんででしょう? スレ違いな質問かもしれませんがアドバイスお願いします。
0806名無しさん@お腹いっぱい。01/10/14 11:32ID:???
>>805
もともとhtdocsにあったCGIは動作してたん?
それなら後からいれたやつは拡張子が変なんじゃない?
(.cgiじゃなくて.plになってるとか)
080775301/10/14 12:10ID:NXFePnJM
>>775
なるほどー。その例はわかりやすいです。ありがと。

sub hoge(&) {…} を hoge {code}; と呼び出すつーのは
hoge(sub{code}) の省略なんだ。といまさらのように理解したおれ。
0808名無しさん@お腹いっぱい。01/10/14 12:18ID:???
>「テーブルアート」という言葉自体は自分が勝手に作った
>いわゆる「造語」でありますが、従来画像ファイルを用いて
>絵を、グラフィカルなページを作っていたと思うのですが、
>これをHTMLタグだけでなんとか出来ないだろうかという
>意味あるのか無いのか分からないような取り組みをして
>みようと思ったわけです。ここではそうして作った作品を
>総称してテーブルアートと呼んでおります。「テーブル」と
>呼んでいるのはHTMLタグで絵を描く際にもっとも多く使用
>するのが<TABLE>タグと呼ばれるものである事に起因しております。

だれでも考えつくが馬鹿馬鹿しくてやらないだけだと思われ。
0809名無しさん@お腹いっぱい。01/10/14 12:21ID:???
>>804
ブラウザ落ちたーよ。
0810名無しさん@お腹いっぱい。01/10/14 12:22ID:???
ただ馬鹿馬鹿しくも地道に作る根性は凄いね。
おれなら元画像にビットマップを用意してCGIで
自動でタグ書き出しちゃうけど、ドット単位になるから
でかいかな。
0811名無しさん@お腹いっぱい。01/10/14 12:30ID:???
>810
意味わからん。
0812名無しさん@お腹いっぱい。01/10/14 12:35ID:???
>>799のリンク先から http://bulknews.net/lib/archives/ に上がってみると
「ほとんどCPANに登録してます」と書いてあるんだけど
このImage::HTMLも登録するのだろうか。
0813蝶初審社01/10/14 19:02ID:/5Y8M3zo
ちょっと質問です。
$a="nanashi";
$aa="nanashisan";
の時、
print "$aa";
とすると、表示されるのはnanashia,nanashisanのどっちでしょう?

前者は$aの変数の値と文字列"a"で
後者は$aaの値です。

Javaとかだと、変数と文字列の区切りがあるのでわかりかったんですが。
よろしくお願いいたします。
0814名無しさん@お腹いっぱい。01/10/14 19:03ID:THG9awFD
質問する前に試してみない理由はなんなんですか
0815名無しさん@お腹いっぱい。01/10/14 19:05ID:r53mAll2
>814
ローカルでテストができずにサーバーに負担をかけるかもしれないと気を使ってる可能性もあるぞ。

>813
ローカルにサーバーを立てて試せ。
0816蝶初審社01/10/14 19:06ID:/5Y8M3zo
>>814
そういうわけじゃなくて、"区切り"って無いんですか?
ということを聞きたかったんですが・・・。
0817名無しさん@お腹いっぱい。01/10/14 19:08ID:???
>813,816
あるよ。
print "${a}a";
みたいに{}で変数名をかこむ。
0818名無しさん@お腹いっぱい。01/10/14 19:09ID:???
$a{a}
0819名無しさん@お腹いっぱい。01/10/14 19:10ID:???
 
0820蝶初審社01/10/14 19:30ID:???
>>817さん
出来ました。レスありがとうございました。m(. .)m
0821名無しさん@お腹いっぱい。01/10/15 18:29ID:6vdToKg4
$time=time;
@hoge=("1234567890","1234567899","1111111111")
foreach(@hoge){
if($_>$time){この要素を削除;}
}
みたいのを使いたいのですがうまい方法無いでしょうか?
私の貧脳では
foreach(@hoge){
if($_>$time){splice (@hoge,$count,1);}
$count++;
}
としか思いつきません。
こんなんあるぞというのあれば教えて下さい。
0822名無しさん@お腹いっぱい。01/10/15 18:34ID:???
@hage = grep { $_ <= $time } @hoge;
0823名無しさん@お腹いっぱい。01/10/15 18:55ID:6vdToKg4
>822
感謝です!!
どういう仕組みかわからないですけど使わせてもらいます。
ありがとうございました。
082482301/10/15 19:32ID:???
なるほど!
配列から$_<=$timeな要素を検索ですか!そして@hageへぶち込むと!
勉強になるですね。
0825822じゃないですが01/10/15 20:05ID:???
>823-824
念に念を入れる意味で補足しておきますが、
@hoge = grep { $_ <= $time } @hoge;  # 左辺の配列も@hoge
という風に、「自分自身にぶち込む」こともできます。
0826名無しさん@お腹いっぱい。01/10/15 20:17ID:???
>825
レスどうもです。
おっしゃる様に使わせてもらっとります。
ありがたや〜。(^人^)
0827名無しさん@お腹いっぱい。01/10/17 18:53ID:TnUIrJkb
配列から特定の要素を取り除くにはどうすればよいのですか?
0828名無しさん@お腹いっぱい。01/10/17 18:55ID:???
splice
0829名無しさん@お腹いっぱい。01/10/17 19:04ID:???
すいませんもうちょっと具体的にお願いします・・・。
えらそうですいません。。
0830名無しさん@お腹いっぱい。01/10/17 19:08ID:mFyYJQ/x
もうちょっと具体的に質問してください。お願いします。
「〜特定の〜」←ココんとこが特にわからん
0831JAPU ◆JAPUTeX. 01/10/17 19:16ID:???
828 ではないが...

perldoc -f splice で全てが解決する可能性が高いです。

@majokko = qw[mami emi pelsia yumi lala];
splice @majokko, 1, 2;
print "@majokko\n";

特定の値を持つ要素を削除したければ grep が使えます。

@majokko = qw[mami emi pelsia yumi lala];
@majokko = grep !/i$/, @majokko;
print "@majokko\n";

とか、

@majokko = grep { not 4 < length } @majokko;

とか。

----
質問するときは具体例まであげると良いかも。
0832名無しさん@お腹いっぱい。01/10/17 19:46ID:???
すいません書き忘れていました。(--;;
配列から特定の要素を取り出してその要素を先頭に移すのはどうすればよいのですか?
たとえば、@hoge = qw[abc acb asd afd wer];
とあって、asdと言う値を取り出してこの配列の先頭に移すにはどうすればよいのですか?
0833名無しさん@お腹いっぱい。01/10/17 19:56ID:???
http://www.angelfire.com/ak5/2ch-web-program/kako/984430156.html
の677-683とか。

過去ログは貴重だな。
0834名無しさん@お腹いっぱい。01/10/17 20:24ID:???
ちょっと違うんじゃない
0835名無しさん@お腹いっぱい。01/10/17 21:57ID:2JY7Wh7v
2つのファイルで更新記録が古い方に書き込むことって出来ますか?
もしあるとすればどのように判断すればよいのでしょうか。
0836名無しさん@お腹いっぱい。01/10/17 22:00ID:???
-M
0837名無しさん@お腹いっぱい。01/10/17 22:20ID:???
stat()
0838名無しさん@お腹いっぱい。01/10/18 22:17ID:lS77su3d
cgiでラジオボタンやプルダウンメニューを表示する際、
あらかじめ表示される状態を変化させる方法はどうやったらいいのでしょうか?
<select name="number">
<option value="1">1
<option value="2">2
<option value="3">3
<option value="0"selected>0
</select>
selectedの位置を変化させるのだろうか?でもどうやって(??)もっとうまいやり方
があるのだろうか?という感じです。よろしくお願いいたします。
0839名無しさん@お腹いっぱい。01/10/18 22:20ID:???
>selectedの位置を変化させるのだろうか?
はい
0840名無しさん@お腹いっぱい。01/10/18 22:23ID:???
>838
俺のやり方の場合

$select[$number] = " selected";
print <<"EOF";
<select name="number">
<option value="1"$selext[1]>1
<option value="2"$selext[2]>2
<option value="3"$selext[3]>3
<option value="0"$select[0]>0
</select>
EOF
0841名無しさん@お腹いっぱい。01/10/18 22:24ID:???
タイプミス発見・・・。

$select[$number] = " selected";
print <<"EOF";
<select name="number">
<option value="1"$select[1]>1
<option value="2"$select[2]>2
<option value="3"$select[3]>3
<option value="0"$select[0]>0
</select>
EOF
0842名無しさん@お腹いっぱい。01/10/18 22:28ID:???
>>841
どうでもいいけど識別子をEOFにするのはおかしいような・・・
0843名無しさん@お腹いっぱい。01/10/18 22:51ID:gx0MC5aQ
以下の文章から任意の範囲を抜き出したいのですが、
どのような表記をすればいいのでしょうか?
<table>の属性なども不確定です。

<table><tr><td>
<table><tr><td>
<table><tr><td> --------------- この行から
題名

〜不確定内容〜

</td></tr></table> ----------------- この行まで
〜テーブル以外の長い要素が入る〜
フッタ
</td></tr></table>
</td></tr></table>

$str =~ m#(<table[^(<td)]+<td.+?題名</table>).+?フッタ#is;
とやってみましたがダメでした。

というか [^(<td)]+ みたいな使い方って正しいんでしたっけ?
「このグループ以外の連続」をやりたいのですが。
084484301/10/18 23:14ID:W7vPTi/j
>>843
なんかわかりにくい書き方だったので補足します。
ようするに

「題名」という文字から前に調べに行って、
最初の「<table」から取得したいのです。
0845840-84101/10/18 23:29ID:???
>842
すまない。
いつもはHTMLとか使ってて、でもそれだとカッコわるいかと思って
変えてみてた。(汗
そうだね、EOFはしない方がいいね・・・。
0846名無しさん@お腹いっぱい。01/10/19 01:02ID:AxUzxNAn
>>843
勉強のため、いっこ考えてみました。自信ないけど(滅

my $re1 = '<table[^>]*><tr[^>]*><td[^>]*>[^<>]*';
my $re2 ='</td></tr></table>';
$str =~ /($re1(?!$re1)題名.*?$re2)/is;
0847名無しさん@お腹いっぱい。01/10/19 01:43ID:LITbLOtt
>>843
こんなのも。
$first_str = '<table';
$last_str = '/table>';
$title_str = '題名';

$title_pos = index $str, $title_str;
$first_pos = rindex $str, $first_str, $title_pos;
$last_pos = index $str, $last_str, $title_pos;
$last_pos -= $first_pos - length($last_str);

print substr $str, $first_pos, $last_pos;
0848通りすがりですが01/10/19 01:56ID:???
>>847
これ勉強になります、こう言うのってつい正規表現に傾倒しちゃうけど
ループに入れたりして、特定タグ内を抜き出す時とか便利そうですね、 ふむふむ...
0849名無しさん@お腹いっぱい。 01/10/19 06:59ID:???
print <<EOF;
>>842
どうしてオカシイの? endが一杯になるから?
EOF
0850名無しさん@お腹いっぱい。01/10/19 07:10ID:???
End Of File じゃないからってことじゃない?
別にまずくは無いけど、意味上おかしいって意味でしょ。
■ このスレッドは過去ログ倉庫に格納されています