Perl 初心者コーナー Part22
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
03/04/15 10:15ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
CGIだけど、なんか質問ある? Part 10
http://pc2.2ch.net/test/read.cgi/php/1048686475/
参考書籍の話題は、【Perl,CGI】参考書籍 第三版
http://pc.2ch.net/test/read.cgi/php/1030209573/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般/Part2】
http://pc.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は、【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
過去ログやお勧めサイトは >>2-10
0824bloom
03/05/10 15:10ID:9fodVbL50826nobodyさん
03/05/10 15:41ID:sF6xyzVT詳しくご教授おながいします
0827nobodyさん
03/05/10 15:48ID:???PerlのコーディングスレでSSIの事を聞こうとするという事が
どういう事かわかってるか?
0829nobodyさん
03/05/10 16:58ID:???0831nobodyさん
03/05/10 17:40ID:???0832nobodyさん
03/05/10 18:29ID:???>CGIで…略…不可能でしょうか?
>print使ってCGIから出力するしかないんですかね?
全く意味が分からん。
上の文はCGIで出来るのかを聞く文章で、なおかつCGIで処理を行う事を求める文書。
下のはCGIで出来ると自分で肯定している文書で。なおかつCGIで処理を行いたくないと言ってる文章。
取り敢えず出なおしてきなさい。
0833nobodyさん
03/05/10 20:20ID:g2YXJoh/CGIのprintで出力しました。
しかし、テキストエリアに、そのCGIのソースをいれると、</textarea>がタグとしてみなされてしまって、
なんかソースファイルがテキストエリアからはみ出るんですが、テキストエリア内のタグを無効化するというのはありませんか?
0834nobodyさん
03/05/10 20:29ID:???わかってないようだから教えてやろう。
ス レ 違 い だ 。
0835nobodyさん
03/05/10 20:41ID:g2YXJoh/大変申しわけありませんが、どの板でしょうか?
0836nobodyさん
03/05/10 21:08ID:g2YXJoh/を取得したんですが、これを664とかちゃんとした数字、最終更新日を
時間分秒に変えるにはどうしたらいいですか?
0837動画直リン
03/05/10 21:10ID:9fodVbL50838nobodyさん
03/05/10 21:26ID:???>テキストエリア内のタグを無効化
そのCGIが無効化処理すればいい。
>>834がああ言ってるのはperlに関係なくHTMLの問題だからでしょ。
>>836
33188 (10進数) = 1000000110100100 (2進数)
下9bitが110100100(2進数)
3bitずつ拾って8進数にすると、544ってとこか。
最終更新日はUnixタイムスタンプかな。localtime()でどうだ?
手元にリファレンスないから適当なんで、ちゃんと知りたいならリファレンスをどうぞ。
0839nobodyさん
03/05/10 21:26ID:???超板違いで本当は教えたらダメなルールなんだけど、今回限り特別で教えてやろう。(以後ここで質問するなよ)
と、思ったが
>CGIのprintで出力しました。
>しかし、テキストエリアに、そのCGIのソースをいれると
ここが意味分からない。もうちょっとやりたい事と書きたい事を整理して、web製作に行け。
ちなみに、&lt; &gt;これの半角がHTMLに置けるタグとなる。
もう来るなよ。
0840nobodyさん
03/05/10 21:31ID:???自分で探せ。
各スレの>1を読めばわかるだろう。
脳足りんじゃなければ。
脳足りんなら、教えても理解できんから素直に諦めろ。
>836
検索しろよ。
8進数に変換した下3桁だ。
やり方くらい自分で調べろ。
最終更新日の方は、秒→時間の変換は普段からやってないか?
それと同じ。
0841nobodyさん
03/05/10 22:05ID:g2YXJoh/ありがとうございます。
printf("%o")でできました。
それからsubstrで取り出してやれば無事できました。
ありがとうございました。
0842nobodyさん
03/05/10 23:12ID:???質問とは外れているけど、その書き方でちゃんと動いたとしても、
2重ループと言って強烈に効率が悪いから、悪いやり方、ということになる。
819のようにハッシュを使ってね。
0843nobodyさん
03/05/10 23:44ID:???こいつ、どうよ。
0844nobodyさん
03/05/10 23:54ID:g2YXJoh/0847nobodyさん
03/05/11 00:07ID:???なぜ、PerlスレでHTMLの話が出てくるんだ。
0848nobodyさん
03/05/11 00:15ID:???2:PerlはHTMLを扱うためのものだと思っている。
3:学校で自慢するためにサイトに自分で少しでもいじったCGIを置きたかった。
さあ、正解は?
0849nobodyさん
03/05/11 00:18ID:???0850nobodyさん
03/05/11 00:37ID:p1iIhNqbプログラムについて全然分かりません。
それについてのサイトとか>>2-10周辺とか見ても
次元が違うみたいなことが書かれてあって困ります。
ただ適当にネットやって楽しんでるくらいの人が
理解するには
どうすればいいのでしょう
0851nobodyさん
03/05/11 00:43ID:???なぜPerlに手を出そうとしてるのか。
0852nobodyさん
03/05/11 00:55ID:p1iIhNqb最初から何も知らないのとあんま変わらないと
思うのですがー
いけませんか
0853nobodyさん
03/05/11 01:03ID:???ただ適当にネットやって楽しんでるだけで
理解しようとするのは無謀だということ。
プログラミング初心者用の解説本だっていくらでも出てるんだし、
本気で覚えようとするならいくらでも手段はある。
0854nobodyさん
03/05/11 01:03ID:???何を教えられても身にはつかない。
「教えてもらおう」と考えている内は、一生覚えられない。
0855動画直リン
03/05/11 01:10ID:D5AlwyCG0856nobodyさん
03/05/11 01:13ID:???「perl チュートリアル」でググってみて、そこで勉強してみて、分からないことがあったらまたおいで。
0857nobodyさん
03/05/11 10:37ID:???(a,b,c) -> (1 => a,2 => b,3 => c)としたい
なお。(a,undef,c)のときは、(1 => a,3 => c)とする
よろしく。
0858852
03/05/11 10:58ID:K/IiEdpMおk,十分です、
逝ってきます
0860nobodyさん
03/05/11 11:37ID:???でたでた。
必要性に関しての議論なんてしてないのに、でしゃばってくるやつ。
わからないなら、黙ってれよ。
つーか、それなりに使うロジックだ。
おまえが必要となるケースを経験してねーだけ。プ
ちなみに
% = map{$i++ => $_} @
が定石。
ただし、undefの場合は考慮せず。
0863862
03/05/11 12:21ID:???苦しいけど、こういう手もあるわなw
0865250
03/05/11 12:44ID:???for(0 .. $#aya){
$aya{$_} = $aya[$_] if(not undef $aya[$_]);
}
素直にforつかってりゃいいんでねーの?
0866nobodyさん
03/05/11 13:09ID:???これの方が速度出るんじゃねーの?
0867nobodyさん
03/05/11 15:40ID:IBTMpZAFこれを、「.」「..」,「.*(.htaccessなど)」,ディレクトリ、ファイル
という順番であらわしたいんですが、どうしたらいいでしょうか?
0869nobodyさん
03/05/11 16:00ID:IBTMpZAFソートすると、ディレクトリが優先的に上にこないんですよ。
そこが困ってるんですよ・・・
0870nobodyさん
03/05/11 16:01ID:ZMWn/EPcどうすればいいでしょうか?文字コードはShift_JISです。
0871nobodyさん
03/05/11 16:05ID:???ファイル用の配列とディレクトリ用の配列を両方作って、それぞれにsort。
その上で、ディレクトリ用配列を先に表示すれば?
>870
もうちょっとわかりやすく。
文字のエンコードの事か?
だったらgoogleででも検索しる。
0872nobodyさん
03/05/11 16:08ID:???"%ff%ff"みたいな文字列があったとして、
Perlでそれを標準入出力に読めるような形で
出力するにはどうすればいいんでしょうか?
0873nobodyさん
03/05/11 16:10ID:???0874nobodyさん
03/05/11 16:11ID:???print STDOUT "%ff%ff";
0875nobodyさん
03/05/11 16:17ID:???例えばですね、文字列⇒16進表記、という変換をしてくれるCGIは
Web上にいくつかあります。その逆がやりたいんです。
16進表記と文字コードを指定すると、標準入出力に文字が表示されるような
0876nobodyさん
03/05/11 16:20ID:???jcodeで検索。
0877nobodyさん
03/05/11 16:21ID:???ttp://www.google.com/search?q=Perl+%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89+%E5%A4%89%E6%8F%9B&ie=UTF-8&oe=UTF-8&hl=ja&lr=
0879435
03/05/11 16:31ID:???0880nobodyさん
03/05/11 16:44ID:???@files =
map { $_->[0] }
sort { $b->[1] <=> $a->[1] || $b->[2] <=> $a->[2] || $a->[0] cmp $b->[0] }
map { [ $_, /^\./ ? 1 : 0, -d ? 1 : 0 ] }
readdir DIR;
キーワード:
sort map 三項演算子 ファイルテスト演算子 比較演算子
リファレンス 無名配列 Schwartzian Transform
0881nobodyさん
03/05/11 16:48ID:???0882nobodyさん
03/05/11 18:45ID:???一度使っていらなくなった変数は、
メモリ容量の事を考えて初期化したほうがいいですか?
それとも、初期化処理自体が無駄に負荷をかける処理ですか?
(視覚的には初期化したほうが「もう使わない」って分かってグット)
0883nobodyさん
03/05/11 18:56ID:???捨てた方がいいかも。
大抵は、消費量が微小か、要らなくならないんじゃないかな。
0884nobodyさん
03/05/11 19:02ID:IBTMpZAF#!/usr/bin/perl
opendir DIR, ".";
@files = readdir DIR;
splice(@files,1,1);
close DIR;
#################ソート処理#################
sub hikaku{
my($alen) = Length($a);
my($blen) = Length($b);
if ($alen == $blen){return 0;}
elsif ($alen > $blen) {return 1;}
elsif ($alen < $blen) {return -1;}
}
#@files = sort (@files);
############################################
$f = "<td bgcolor=ffffff><font size=2>";
print "Content-Type: text/html\n\n";
print "<html><head>\n";
print "<title>dir</title></head>\n";
print "<body>\n";
print "<br><br><br><br><br><br> ファイル一覧<br>\n";
print "<br><table cellpadding=1 cellspacing=1 bgcolor=dddddd>\n";
print "<tr>${f}ファイル名</td>${f}リンク</td>${f}拡張子</td>${f}サイズ</td>${f}アクセス権</td>${f}最終更新日</td></tr>\n";
#ファイル名を全て取得するまでループ
foreach (@files){
0885続き
03/05/11 19:03ID:IBTMpZAF@stat = stat $_;
#時間の形式を変換
sub time {
$ltime = $stat[9];
($sec,$min,$hour,$mday,$mon,$year,$wdy) = localtime($ltime);
@youbi = ("日", "月", "火", "水", "木", "金", "土");
printf("%04d/%02d/%02d($youbi[$wdy]) %02d:%02d:%02d\n",
$year + 1900,$mon + 1,$mday,$hour,$min,$sec);
}
#パーミッションを8進数に変換
$bin = sprintf("%o",$stat[2]);
$par = substr($bin,2,4);
#パーミッションの桁数調整
if ($par =~ /\d{4}/){$par = substr($par,1,3);}
#拡張子を抜き出す
$i = index($_,"\.");
$index = substr($_,$i++,11);
0886続き
03/05/11 19:03ID:IBTMpZAFif ($bin =~ /40/){$index = "";
$stat[7] = "<font color=red>DIR</font>";}
else{$index = "<font size=2>$index</font>";
}
#テーブルに組み込み出力
print "<tr>${f}$_</td>\n";
print "${f}<a href=$_ target=_top>$_</a></td>\n";
print "<td bgcolor=ffffff>$index</td>\n";
print "${f}$stat[7]</td>\n";
print "<td bgcolor=ffffff align=center><font size=2>${par}</td>\n";
print "${f}\n";
&time;
print "</td></tr>\n";}
print "</table><br>\n";
print "<center><input type=button value=更新 onClick=history.go(0)></center>\n";
ってしたんですけど、これをあまり変えないで、配列2つつくるのは無理そうですね。。
0887nobodyさん
03/05/11 19:13ID:???@pairs = split(/&/,$buf);
foreach $pair(@pairs)
{
($name,$value) = split(/=/,$pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$value =~ s/</</g;
$value =~ s/>/>/g;
$FORM{$name} = $value;
}
$Msg= $FORM{'MSG'};
print "$Msg";
で表示されないのです。どうすれば表示できるでしょうか?
0888nobodyさん
03/05/11 19:24ID:???テキストエリアを含んでいるformのあたりはどういうソースにしてるの?
0889887
03/05/11 19:42ID:???<form method="POST" action="./test.cgi">
<div>名前:<input type="text" name="NAME"></div>
<textarea type="text" name="MSG" cols="40" rows="4" wrap="soft"></textarea>
<input type="submit" value="送信">
<input type="reset" value="取消">
--CGI側--
#!/usr/local/bin/perl
local($buf);
#入力データ読み出し
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read (STDIN, $buf, $ENV{'CONTENT_LENGTH'});
} else {
$buf = $ENV{'QUERY_STRING'};
}
以下>>887のソースへ
という風になっております。
0890見せかけの善人(コピペ推奨)
03/05/11 19:52ID:???http://www3.ocv.ne.jp/~cochome/kaisetsu.htm#chigai
http://www.autism.jp/l-02-03-aspe3.htm
http://www.geocities.co.jp/Beautycare/5917/as/
●接し方のルールがわからず無邪気に周囲の人に対して迷惑なことをしてしまうこと
がある。人を傷つけるということには鈍感です。年配の先生に向かって「おばあさん
先生おはようございます」と明るい大声で挨拶する生徒もいる。こういった言動をす
る場合にも彼らには悪意はない。
●小さな声でひとり言を言ったり、考えていることを声に出して言うことがある。
●融通が利かないことも学校生活で問題になる。時間割の変更や突然の教師の欠勤と
いう事態で不安を感じたりかんしゃくをおこしたりする。あまりに規則に厳格なため
に、遅刻した同級生に延々と注意をしたり、修学旅行などで消灯時間をかたくなに守
り、他の生徒の顰蹙をかったりすることがある。
●行動・興味・活動のパターンが貧困で反復常同的なことも自閉症の特徴である。すな
わち、日常の活動の様々な面にわたって柔軟性のないルーティン(決まった手順や日課)
を押しつける傾向、これを慣れ親しんでいる習慣や遊びのパターンだけでなく、たいてい
は新しい活動にも押しつける。そしてルーティンや個人的な環境の細部の変化(家の中の
置物や家具の移動によるなど)に対する抵抗がみられることがある。
●揺れる木の葉を見続ける子どもは興味のレパートリーが狭いとも言え、視覚的な敏感さ
があるといっても良い。
●精神遅滞を伴うものと伴わないもので大きく分かれる。100%果汁のオレンジジュー
スを思い浮かべてください。それにだんだん水を加えて薄めて行くと終いには水にごく近
くなる。一口飲んで「オレンジジュースだ!」とわかるものは自閉症、水に近いけれどな
にかオレンジの味が混じっているのがアスペや高機能・・。その濃度はさまざま。濃いオ
レンジジュースであったとしても早期の療育や周りの対応によって水に近づいていくこと
は可能。しかし間違えてはいけないのはオレンジジュースが一滴でも落ちている場合は
「純粋な水」にはなれないのです。
0891nobodyさん
03/05/11 20:02ID:???$value =~ tr/+/ /;
の行に全角の空白文字が混ざってる。
ヘッダをはいてないけど、省略してるだけ?
print "Content-type: text/html\n\n";
0892nobodyさん
03/05/11 20:11ID:???ソートの話しなんですが…。
@data_1;
@data_2; #両方とも中は数字
こんなのがあったとします。
これをごっちゃまぜにして
@data_sort;
の中にソートして入れたいのですが、そうすると「@data_1」が持っていた変数なのか、
「@data_2」が持っていた変数なのか、分からなくなってしまいます。
「@data_sort」の中に入れつつも、その値は元々どちらの変数が持っていた値かを分かるようにする方法はないでしょうか?
0893435
03/05/11 20:16ID:???0894nobodyさん
03/05/11 20:18ID:???超おすすめサイト一覧です☆
http://accessplus.jp/staff/in.cgi?id=10645
http://www.39001.com/cgi-bin/cpc/gateway.cgi?id=neat
http://www.39001.com/cgi-bin/cpc/gateway.cgi?id=pure
http://accessplus.jp/staff/in.cgi?id=10943
http://www.emzshop.com/goodstyle/
0895887
03/05/11 20:30ID:???ヘッダは省略してるだけです。説明不足ですみません。
全角スペースは、CGIのソースには含まれていなかったので、
ここに書き込むときにでも発生したのかもしれません。
textarea以外のinput等に入力されたデータはちゃんと表示されています。
0896nobodyさん
03/05/11 20:36ID:pspablfq記事番号、パスワードが入力するとtextareaやらに表示させる、
ってトコまではできました。
しかしそこからログファイルの配列とファイルの書きこみ操作がよく分かりません。
ログが全部消えてしまったりします。
ログファイルの変更箇所だけを上書き、というはどうやればいいのでしょうか?
分かりにくい文章ですが、宜しくお願いします。
0897nobodyさん
03/05/11 20:47ID:???ログファイルの一行を変えたいならファイルの中身を一行ずつ配列に入れ(もちろんすべて)、
修正したい行が入っている要素だけ書き換える。
あとは配列の中身をファイルに上書き。
0898892
03/05/11 20:55ID:???なんとか工夫して頑張ってみます。
0900477
03/05/11 23:24ID:???2次の配列を作って表示させてるんですが
--------------------------------------
@gyou1 = (
['photo','pic','scan'],
['ph0001','pic001a','scan001'],
['ph0002','pic001b','scan002a'], 〜56行続く
);
@gyou2 = (
['photo','pic','scan'],
['ph1001','pic101','scan101a'],
['ph1002','pic102','scan101b'], 〜70行ほど続く
);
for ($i = 0; $i <= 56;i++){
print "$gyou1[i][1]";
}
for ($j = 0; $j <= 56;j++){
print "$gyou2[j][1]";
}
--------------------------------------
こんな感じに表示させているんですが、凄まじく重くて・・・、
一片に表示させずa herefみたいなのでページ切り替えさせたいんですけれど
方法がわかりません、
ここのCGIみたく任意の記事番号をハイフンで繋ぐだけで見せてくれる仕組みが
ヒントになりそうだけどソース見れないし・・・
なにかないでしょうか?
あと、ついでですが、データ内包するよりログファイルから引き出す方が処理早いでしょうか?
できれば教えて下さい、
0901nobodyさん
03/05/11 23:43ID:???今日もCGIの質問が多いなぁ〜・・・(´ー` )
0902nobodyさん
03/05/12 00:14ID:???微妙な質問カモン
0903nobodyさん
03/05/12 00:55ID:???> ページ切り替えさせたいんですけれど方法がわかりません
やりたい事を実現するには具体的にどんな「情報」が
必要か考えてみれ。まず表示を開始する行番号が
必要だよな? 後は?
> データ内包するよりログファイルから引き出す方が処理早いでしょうか?
実際に試せ。コード書いて調べろ。その方が人に聞くより早い。
0904nobodyさん
03/05/12 01:56ID:722KG0lcLocationではうまくいかないんですが他にジャンプさせる
命令語ありますか?
0905nobodyさん
03/05/12 01:58ID:Uc7D0G4o先月分126620円入金されました。
リンクスタッフの登録はメアドと任意のパスワード
を入力すれば完了。メアドは無料メールでも可。
http://accessplus.jp/staff/in.cgi?id=10645
0906nobodyさん
03/05/12 02:56ID:???http://pc2.2ch.net/test/read.cgi/php/1045091733/
http://pc2.2ch.net/test/read.cgi/php/1048686475/
0909nobodyさん
03/05/12 09:38ID:K6tDiGbjprint ゙aiueokakikukeko\n゙;
ってのが複数でてくる場合
変数aに置き換えて$aとするのと
サブルーチンaにして&a;とするのではどうかわるのですか?
0910nobodyさん
03/05/12 11:59ID:???0911908
03/05/12 12:05ID:K6tDiGbjサブルーチンだったら展開に時間がかかるってことですか?
複数の処理の場合はサブルーチン、一個の処理の場合は変数ということでしょうか?
0912nobodyさん
03/05/12 12:08ID:???0913nobodyさん
03/05/12 12:11ID:???0914nobodyさん
03/05/12 12:13ID:???サブルーチンの場合、一回実行するごとにスタックがつまれてメモリを食う。
その分、若干時間も食う。
この場合はどうのこうのと言うより、自分で考えろ。
0915nobodyさん
03/05/12 12:25ID:K6tDiGbjありがとうございます。極端な話、すべて変数にしちゃってもいいですかね?
>>914ためしたんだけどあまりかわらないような…
メモリを食うというのは初めて知りました。大変参考になりました
0917nobodyさん
03/05/13 00:29ID:sfojkvp6サンクス
0919918
03/05/13 02:34ID:???0920nobodyさん
03/05/13 02:35ID:???0921nobodyさん
03/05/13 02:46ID:???perl/tkをwinでちょっとやってみようと思い、マズは色んなサイト見てみる事にしました。
で、以下のコードをとあるサイトからパクって来ました。
$top = MainWindow->new();
$button = $top->Button( -text => 'EXIT', -command => \&exit );
$button->pack();
MainLoop();
これ、正常に動いたのですがなにがなんだか意味が分かりません。全く分かりません。
リファレンスとか、無名のなんたらを使ってるって事は分かったのですが…。
tkのプログラミングをを専門に解説してるサイトが一向に見つかりません。
リファレンスの説明をしているサイトは見つかったのですが、
「tkの記述を」まるで初心者におしえるかのごとく細かく丁寧に、そして多量に書いているサイトはないでしょうか?
クソみたいな質問ごめんなさい。
0922nobodyさん
03/05/13 02:51ID:???http://www.oreilly.co.jp/index/perl/
レス数が900を超えています。1000を超えると表示できなくなるよ。