【Perl 】初心者コーナーPart7
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい
01/09/12 13:04ID:???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を見よう。
0797名無しさん@お腹いっぱい。
01/10/13 00:16ID:???{command.comというファイルが置かれている場所からの相対パス}
こう考えなさい。
0798名無しさん@お腹いっぱい。
01/10/13 00:37ID:???ありがとうございますです。
とりあえず勉強不足過ぎという事ははっきりしました。
まぁ前からわかっていましたが…。
今日一日中このスレに常駐していた気がする。
勉強になるなぁ〜。
0799名無しさん@お腹いっぱい。
01/10/13 19:06ID:Z60DF3aYこれすごすぎ、gifファイルをHTMLだけで表現している。
あんまデカイ画像するとブラクラになりかねんが、
0800名無しさん@お腹いっぱい。
01/10/13 20:38ID:???うひひ(w
こんな感じになるのか?
ttp://hi.sakura.ne.jp/~okada/table/mario_bs2.html
0801名無しさん@お腹いっぱい。
01/10/13 21:10ID:rwndiC8Eそこはまだ同色のドットをつなげたりしてるからいいっすよ。
799のやつは全部1x1ドットに分解してた(呆
#これ見るためImage::Magickインストールしちゃったよ
0802名無しさん@お腹いっぱい。
01/10/13 21:16ID:???DHTMLは良いなあ・・・・
激しく無意味でイイ(・∀・)♪!
0803799
01/10/13 23:07ID:Z60DF3aY遊び以外で使うこと無いような。、
0804799
01/10/13 23:29ID:Z60DF3aY試しに、某板看板をしてみました。
にしてもサイズがでかくなりますね。
33KB->3767KB になちゃう。
0805
01/10/14 06:40ID:9DG4zskVWIN98でapache web server と active perl使ってます。
htdocsフォルダから、とあるcgiファイルをディスクトップ上に移動して、
書籍のサンプルcgiファイル(←移動させたcgiファイルと同じもの)
をhtdocsフォルダにコピペしました。
でそのコピペしたcgiファイルを実行すると、ファイルのダウンロードの画面がでてしまい、
結局そのプログラムは実行されませぬ。
なんででしょう? スレ違いな質問かもしれませんがアドバイスお願いします。
0806名無しさん@お腹いっぱい。
01/10/14 11:32ID:???もともとhtdocsにあったCGIは動作してたん?
それなら後からいれたやつは拡張子が変なんじゃない?
(.cgiじゃなくて.plになってるとか)
0807753
01/10/14 12:10ID:NXFePnJMなるほどー。その例はわかりやすいです。ありがと。
sub hoge(&) {…} を hoge {code}; と呼び出すつーのは
hoge(sub{code}) の省略なんだ。といまさらのように理解したおれ。
0808名無しさん@お腹いっぱい。
01/10/14 12:18ID:???>いわゆる「造語」でありますが、従来画像ファイルを用いて
>絵を、グラフィカルなページを作っていたと思うのですが、
>これをHTMLタグだけでなんとか出来ないだろうかという
>意味あるのか無いのか分からないような取り組みをして
>みようと思ったわけです。ここではそうして作った作品を
>総称してテーブルアートと呼んでおります。「テーブル」と
>呼んでいるのはHTMLタグで絵を描く際にもっとも多く使用
>するのが<TABLE>タグと呼ばれるものである事に起因しております。
だれでも考えつくが馬鹿馬鹿しくてやらないだけだと思われ。
0809名無しさん@お腹いっぱい。
01/10/14 12:21ID:???ブラウザ落ちたーよ。
0810名無しさん@お腹いっぱい。
01/10/14 12:22ID:???おれなら元画像にビットマップを用意してCGIで
自動でタグ書き出しちゃうけど、ドット単位になるから
でかいかな。
0811名無しさん@お腹いっぱい。
01/10/14 12:30ID:???意味わからん。
0812名無しさん@お腹いっぱい。
01/10/14 12:35ID:???「ほとんど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:THG9awFD0815名無しさん@お腹いっぱい。
01/10/14 19:05ID:r53mAll2ローカルでテストができずにサーバーに負担をかけるかもしれないと気を使ってる可能性もあるぞ。
>813
ローカルにサーバーを立てて試せ。
0816蝶初審社
01/10/14 19:06ID:/5Y8M3zoそういうわけじゃなくて、"区切り"って無いんですか?
ということを聞きたかったんですが・・・。
0817名無しさん@お腹いっぱい。
01/10/14 19:08ID:???あるよ。
print "${a}a";
みたいに{}で変数名をかこむ。
0818名無しさん@お腹いっぱい。
01/10/14 19:09ID:???0819名無しさん@お腹いっぱい。
01/10/14 19:10ID:???0821名無しさん@お腹いっぱい。
01/10/15 18:29ID:6vdToKg4@hoge=("1234567890","1234567899","1111111111")
foreach(@hoge){
if($_>$time){この要素を削除;}
}
みたいのを使いたいのですがうまい方法無いでしょうか?
私の貧脳では
foreach(@hoge){
if($_>$time){splice (@hoge,$count,1);}
$count++;
}
としか思いつきません。
こんなんあるぞというのあれば教えて下さい。
0822名無しさん@お腹いっぱい。
01/10/15 18:34ID:???0823名無しさん@お腹いっぱい。
01/10/15 18:55ID:6vdToKg4感謝です!!
どういう仕組みかわからないですけど使わせてもらいます。
ありがとうございました。
0824823
01/10/15 19:32ID:???配列から$_<=$timeな要素を検索ですか!そして@hageへぶち込むと!
勉強になるですね。
0825822じゃないですが
01/10/15 20:05ID:???念に念を入れる意味で補足しておきますが、
@hoge = grep { $_ <= $time } @hoge; # 左辺の配列も@hoge
という風に、「自分自身にぶち込む」こともできます。
0826名無しさん@お腹いっぱい。
01/10/15 20:17ID:???レスどうもです。
おっしゃる様に使わせてもらっとります。
ありがたや〜。(^人^)
0827名無しさん@お腹いっぱい。
01/10/17 18:53ID:TnUIrJkb0828名無しさん@お腹いっぱい。
01/10/17 18:55ID:???0829名無しさん@お腹いっぱい。
01/10/17 19:04ID:???えらそうですいません。。
0830名無しさん@お腹いっぱい。
01/10/17 19:08ID:mFyYJQ/x「〜特定の〜」←ココんとこが特にわからん
0831JAPU ◆JAPUTeX.
01/10/17 19:16ID:???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:???の677-683とか。
過去ログは貴重だな。
0834名無しさん@お腹いっぱい。
01/10/17 20:24ID:???0835名無しさん@お腹いっぱい。
01/10/17 21:57ID:2JY7Wh7vもしあるとすればどのように判断すればよいのでしょうか。
0836名無しさん@お腹いっぱい。
01/10/17 22:00ID:???0837名無しさん@お腹いっぱい。
01/10/17 22:20ID:???0838名無しさん@お腹いっぱい。
01/10/18 22:17ID:lS77su3dあらかじめ表示される状態を変化させる方法はどうやったらいいのでしょうか?
<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:???はい
0840名無しさん@お腹いっぱい。
01/10/18 22:23ID:???俺のやり方の場合
$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:???どうでもいいけど識別子を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)]+ みたいな使い方って正しいんでしたっけ?
「このグループ以外の連続」をやりたいのですが。
0844843
01/10/18 23:14ID:W7vPTi/jなんかわかりにくい書き方だったので補足します。
ようするに
「題名」という文字から前に調べに行って、
最初の「<table」から取得したいのです。
0845840-841
01/10/18 23:29ID:???すまない。
いつもはHTMLとか使ってて、でもそれだとカッコわるいかと思って
変えてみてた。(汗
そうだね、EOFはしない方がいいね・・・。
0846名無しさん@お腹いっぱい。
01/10/19 01:02ID:AxUzxNAn勉強のため、いっこ考えてみました。自信ないけど(滅
my $re1 = '<table[^>]*><tr[^>]*><td[^>]*>[^<>]*';
my $re2 ='</td></tr></table>';
$str =~ /($re1(?!$re1)題名.*?$re2)/is;
0847名無しさん@お腹いっぱい。
01/10/19 01:43ID:LITbLOttこんなのも。
$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:???これ勉強になります、こう言うのってつい正規表現に傾倒しちゃうけど
ループに入れたりして、特定タグ内を抜き出す時とか便利そうですね、 ふむふむ...
0849名無しさん@お腹いっぱい。
01/10/19 06:59ID:???>>842
どうしてオカシイの? endが一杯になるから?
EOF
0850名無しさん@お腹いっぱい。
01/10/19 07:10ID:???別にまずくは無いけど、意味上おかしいって意味でしょ。
0851名無しさん@お腹いっぱい。 :
01/10/19 08:00ID:???0852名無しさん@お腹いっぱい。
01/10/19 16:45ID:iY0U/7m6シフトJISまたはUTF-8に変換する関数ってありますか?
0853名無しさん@お腹いっぱい。
01/10/19 17:01ID:???文字参照詳しく知らんけど&harts;みたいなやつ?
0854初心者
01/10/19 17:59ID:???0856名無しさん@お腹いっぱい。
01/10/19 20:22ID:Y/1F1KjV入力と回覧を別にしたいのですが、どんなデコード処理を
したらいいんでしょうか? sub formにして入力画面のみの
サブルーチンを作ってみましたが、上手く入力に反映されません。
0857名無しさん@お腹いっぱい。
01/10/19 20:32ID:???他人のCGIの改造?
Content-typeの吐き忘れじゃないの?
何がどう上手く動かないか詳しく説明して。
「上手く入力に反映されません」なんて、こっちからしたら
なにがどう上手く反映されてないかわからないんだから。
0858名無しさん@お腹いっぱい。
01/10/19 20:34ID:???BBSをみんなに回すの?
俺が知らないだけ?
だとしたらスマン。
0859名無しさん@お腹いっぱい。
01/10/19 20:44ID:???少しは過去スレ見ろよ。以前俺が答えたんだから間違いなくある。
#!perl
use 5.6.0;
my $a = '?';
$a =~ s/?([0-9A-Fa-f]+);/pack 'U', $1/ge;
__END__
あとは自分で考えろ。
0860859
01/10/19 20:46ID:???以下全て半角
#!perl
use 5.6.0;
my $a = '&#28023; ';
$a =~ s/&#([0-9A-Fa-f]+);/pack 'U', $1/ge;
__END__
0861名無しさん@お腹いっぱい。
01/10/19 21:16ID:???0862856
01/10/19 22:03ID:???BBSは一覧表示型です。すみません、自己解決しました。
単なるスペルミスでした、お恥ずかしい。
どうもありがとうございました。
0863名無しさん@お腹いっぱい。
01/10/19 22:33ID:???foreach(@aaa){
@bbb = split(/<>/);
$ccc = @bbb[0];
}
とするのと
foreach(@aaa){
($ccc,$ddd,$eee) = split(/<>/);
}
とするのではどっちが効率的なんでしょうか?
後者で言う$ddd,$eeeは使わないんですが。
0864名無しさん@お腹いっぱい。
01/10/19 22:40ID:???その程度の差なら気にしなくていい。
微量な差が気になるならBenchmark.pmを使え。
因みに後者は
($ccc, undef, undef) = split(/<>/);
とした方が若干メモリの節約になる。若干だが。
0865名無しさん@お腹いっぱい。
01/10/19 22:44ID:???foreach(@aaa){
$ccc = (split(/<>/))[0];
}
ってのはどうなんでしょう?
変わらない?
0866名無しさん@お腹いっぱい。
01/10/19 22:44ID:???>863-864です。
0867名無しさん@お腹いっぱい。
01/10/19 22:45ID:???こんなのも。
@array = qw[a<>b<>c 1<>2<>3];
@result = map { (split /<>/, $_, 2)[0] } @array;
0868名無しさん@お腹いっぱい。
01/10/19 22:45ID:???なるほど。
大して変わらないなら余計な変数使わない前者の方が
ソースがスッキリしそうですね。(実際は11個の要素があるので。)
ありがとうございます。
0869863=868
01/10/19 22:46ID:???0872名無しさん@お腹いっぱい。
01/10/20 16:19ID:???0873名無しさん@お腹いっぱい。
01/10/20 19:24ID:???m/^([^<>]*)<>/;
push(@ccc,$1);
}
0874名無しさん@お腹いっぱい。
01/10/20 21:19ID:???0875名無しさん@お腹いっぱい。
01/10/20 21:32ID:???正規表現は遅いでしょ。
foreach(@aaa){
$ccc = substr($_,0,index("$_","<>"));
}
0876名無しさん@お腹いっぱい。
01/10/20 21:56ID:???0877名無しさん@お腹いっぱい。
01/10/20 23:55ID:???perl -v
This is perl, v5.6.1 built for MSWin32-x86-multi-thread
use Benchmark;
my $line = 'aaa<>bbb<>ccc<>ddd';
timethese(2000000, {
t_split => q{ my $ccc = (split /<>/, $line, 2)[0]; },
t_substr => q{ my $ccc = substr($line,0,index($line,"<>")); }
});
__END__
Benchmark: timing 2000000 iterations of t_split, t_substr...
t_split: 5 wallclock secs ( 4.28 usr + 0.00 sys = 4.28 CPU) @ 467180.57/s (n=2000000)
t_substr: 5 wallclock secs ( 5.14 usr + 0.00 sys = 5.14 CPU) @ 389105.06/s (n=2000000)
0878875
01/10/21 00:07ID:???ほぅ。
それはしらなんだ。
サンクス。
0879名無しさん@Emacs
01/10/21 00:15ID:Xm/NF+m90880名無しさん@お腹いっぱい。
01/10/21 00:41ID:???my $line = 'aaa<>bbb<>ccc<>ddd';
timethese(2000000, {
t_split => q{ my $ccc = (split /<>/, $line, 2)[0]; },
t_substr => q{ my $ccc = substr($line,0,index($line,"<>")); },
t_reg => q{ my $ccc = ($line =~ m/^([^<>]*)<>/)[0]; }
});
__END__
Benchmark: timing 2000000 iterations of t_reg, t_split, t_substr...
t_reg: 4 wallclock secs ( 3.74 usr + 0.00 sys = 3.74 CPU)
t_split: 6 wallclock secs ( 5.12 usr + 0.00 sys = 5.12 CPU)
t_substr: 5 wallclock secs ( 5.83 usr + 0.00 sys = 5.83 CPU)
This is perl, version 5.005_03 built for MSWin32-x86-object
0881名無しさん@お腹いっぱい。
01/10/21 01:29ID:???@aray = ('apple','orange','apple','melon','apple','orange');
@dummy{@aray} = (); ####この行
@disp = keys(%dummy);
###の左辺では何が起きているのでしょうか、@と言うのが分かりません。
$dummy{@aray}にしてみると要素数が入ってるし。。。
%dummyはハッシュですよね? 難しいです
0882REN
01/10/21 01:37ID:T+S0eZYVjcodeはちゃんと置いてるんですが。なにかほかの原因がありますか?
ソースが必要ならtxtでアップします。
0883名無しさん@お腹いっぱい。
01/10/21 01:39ID:???スライスについて調べてみれ。
スライスの例として、
@aray = ('apple','orange');
@dummy{@aray} = (1,2);
は、
$dummy{apple} = 1;
$dummy{orange} = 2;
と等価。
0884REN
01/10/21 01:47ID:T+S0eZYVhttp://www25.tok2.com/home/rensphoto/bbs-a.txt
http://www25.tok2.com/home/rensphoto/bbs-a.cgi
0885名無しさん@お腹いっぱい。
01/10/21 01:48ID:???まずHTMLソースを確認する。
ソースが文字化けしていなければ、文字コードの認識ミス。
METAタグとかで文字コードを指定しよう。
詳しい事はWEB製作板に。
HTMLソースが化けているとしたら、原因はそれ以外。
特定の文字だけ化けるのか全体が化けるのかにもよる。
特定の文字だけ化けるなら「予」「表」「ソ」などが使われている場所で
ないか確認。
文字化けする1文字目の後ろに「\」を入れてみる。
ただしこれはs-jis限定、eusでは起きない。
HTMLソース全体が化けるなら、CGIのソースを見せてほしい。
0886名無しさん@お腹いっぱい。
01/10/21 01:49ID:???有難う御座います。
スライスの添え字はリストコンテキストですよね、でも
@dummy[@aray] では駄目なんですよね、これは左辺に有るからですよね。
それで、何故か連装配列になってる!
んー、難解ですぅ、、perldocかなぁ、、、
0887名無しさん@お腹いっぱい。
01/10/21 01:49ID:???jcode.pl置いてるだけで使ってないじゃん・・・
0888名無しさん@お腹いっぱい。
01/10/21 01:53ID:???$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
&jcode'convert($name,"sjis");
これを$i=0;の上くらいに置こうね。
0889REN
01/10/21 01:53ID:T+S0eZYVrequire './jcode.pl';
これじゃダメなんですか....?
0890名無しさん@お腹いっぱい。
01/10/21 01:54ID:???ハッシュスライスって言うのかぁ、、{}でハッシュスライスである事を
明示するんですね、なるほど〜
0891名無しさん@お腹いっぱい。
01/10/21 01:55ID:???0892REN
01/10/21 01:56ID:T+S0eZYV今からいってきます...。
0893REN
01/10/21 02:12ID:T+S0eZYVやってみましたが、どうもダメみたいです.....。
0894REN
01/10/21 02:17ID:T+S0eZYVすいません、うまくいきました。
これからいろんなスレ読んで勉強してきます。
ありがとうございました。
0895名無しさん@お腹いっぱい。
01/10/21 14:02ID:yRzQNOPjできるのでそしょうか?
イメージとしては
$HASH = ( '20010930'=>'9/30', '20011001'=>'10/1', '20011002'=>'10/2');
delete $HASH{/^200110/};
みたいにまとめて消せればなぁと思いまして。
foreach $key( keys %HASH ){
delete $HASH{$key} if $key =~ /^200110/;
}
ってやるしかないでしょうか?
0896895
01/10/21 14:04ID:yRzQNOPj%HASHB = %HASH{/^200110/};
みたいな。感じのことができればいいかなと。
さすがに無理ですか?
■ このスレッドは過去ログ倉庫に格納されています