Perlコーディング初心者質問スレ Part 38
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/10/07 23:23:08ID:kiEzDCJF【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0384nobodyさん
04/10/29 18:52:42ID:???ttp://perldoc.com/perl5.8.4/pod/perlstyle.html
最後の項目を声に出して読みましょう。
>>376
> ぐぐるのもここで質問するのも同じだろ。
false
0385374
04/10/29 18:54:15ID:jolcQ+aOお前が死んだらいいんじゃないか?
自分のために人が何かしてくれるとでも思ってるの?
いい加減自立しろよ、な。
嫌いなやつは「氏ね」なんて理屈は小学生レベルだぞ。
もうすこし大人になったほうがいいんじゃないか、な。
0387nobodyさん
04/10/29 18:56:36ID:???0388nobodyさん
04/10/29 19:05:53ID:???の最後の文字列を消すようにはどのようにすればいいでしょうか?
この場合は、$abc=123にしたいです。
0389nobodyさん
04/10/29 19:37:50ID:???0390nobodyさん
04/10/29 20:26:27ID:???0391nobodyさん
04/10/29 20:45:30ID:???登録や削除のできるCGIを作っています。
一つのフォームから、いくつかのsubmitを使って、それぞれ処理を変えたいのですが、
どのようにすればよいでしょうか?
なんとなく、nameを使ったり、受ける側でif文を書けばいいのかな?という感じなのですが、
どうやって、if文でsubmitのnameを受けたり、分岐したりすれば良いのか分からない状態
です。
どうぞ、よろしくお願いします。
0394nobodyさん
04/10/29 20:59:11ID:???すいません、その書き方が分からないので・・・
if文になるんでしょうか?
突然言い渡された仕事で、何が何だかさっぱりな状況なのでお願いします・・・。
連投になってしまい、すいません
0395nobodyさん
04/10/29 21:25:48ID:???<INPUT name=text1>
<INPUT name=text2>
<INPUT name=text3>
<INPUT name=text4>
<INPUT type=submit value="ここ押せ" name=hoge>
-----------------
-------cgi--------
#!/usr/bin/perl
require 'cgi-lib.pl';
require 'jcode.pl';
&ReadParse(*in);
$txt1 = "$in{'text1'}";
$txt2 = "$in{'text2'}";
$txt3 = "$in{'text3'}";
$txt4 = "$in{'text4'}";
&jcode'convert(*txt1,'sjis');
&jcode'convert(*txt2,'sjis');
&jcode'convert(*txt4,'sjis');
処理
---------
こんなもんだろ。
0397nobodyさん
04/10/29 22:00:17ID:???なんかどこをみても載ってない気がする。
0399nobodyさん
04/10/29 22:58:21ID:buGH5/R10400nobodyさん
04/10/29 23:26:28ID:???まあ裸では使えないが${'...'}のかたちにすりゃほとんど
なんでもアリ。
そうまでして使いたいものかどうかはギモンだがな。
${'a-a'} = 1;
${'aa-'} = 1;
${'-aa'} = 1;
0402nobodyさん
04/10/30 00:47:08ID:???こんなことはできますか?
0403nobodyさん
04/10/30 00:48:20ID:???0404nobodyさん
04/10/30 01:10:10ID:???どこがいけないのでしょうか。
0405nobodyさん
04/10/30 01:17:43ID:???http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlsyn.html#Simple_statements
0406nobodyさん
04/10/30 01:44:29ID:???ありがとうございます。
読んだ上で色々やってみましたが、このような書き方は仕様上不可能のようですね。
お手数おかけしました。
0407nobodyさん
04/10/30 03:37:08ID:???これって常識ですか?
省略したときに $_ を使うようになる条件て何かあるんですか?
0410nobodyさん
04/10/30 10:23:50ID:???0411nobodyさん
04/10/30 10:59:58ID:eCRfKScU文字列ソートを
@data = sort{(split(/\,/,$b))[2] cmp (split(/\,/,$a))[2]} @data;
としてたものを、文字の数でソートしたいと思い、
@data = sort{(split(/\,/,length$b))[2] <=> (split(/\,/,length$a))[2]} @data;
とやってみましたが、ソートしてくれません。
lengthの位置を色々変えてみましたが、ソートしないかエラーかでした。
どうすれば(この場合)[2]番目の文字数でソートできるのでしょうか。
0412nobodyさん
04/10/30 11:13:52ID:zVFP7DHQ環境 -> Linux + Perl5 + cgi-lib.pl
kentさんのjoyfulとか、ほかモジュールを使わないでアップロード機能を
装備しているスクリプトを参考に下記のようにやってみたのですが、
まったくダメダメクンのようです。
ユーザーのファイルを受け取るには、これ以外何をやればよいでしょうか?
どうか教えてください。
$upfile = $in{'img'};
if ($upfile) {
$upfile =~ s/\\/\//g;
$img_file = basename $upfile;
open OUT,">$img_file";
binmode OUT;
binmode STDOUT;
print OUT $in{'img'};
close OUT;
chmod (0666,$img_file);
0413nobodyさん
04/10/30 11:25:33ID:???http://perldoc.com/perl5.8.4/pod/func/length.html
http://perldoc.com/perl5.8.4/pod/func/split.html
http://perldoc.com/perl5.8.4/pod/func/sort.html
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlfaq4.html#How_do_I_sort_an_array_by_anyth
>>412
http://cgi-lib.berkeley.edu/
0414nobodyさん
04/10/30 11:27:57ID:???@data = sort{length((split(/\,/,$b))[2]) <=> length((split(/\,/,$a))[2])} @data;
>>412
デリミタの処理が一切見当たらない。
enctype="multipart/form-data"でPOSTしたらどんなデータが送られてくるのか?を確認するよろし。
0415412
04/10/30 11:39:40ID:zVFP7DHQ参考にしてみます。
>>414
>enctype="multipart/form-data"でPOSTしたらどんなデータが送られてくるのか
File::Basenameで取得したファイル名の中に、ローカルパスが格納されています。
001.jpg -------------------------------------------------------------
C:\Documents and Settings\admin\My Documents\My Pictures\任天堂\001.jpg
---------------------------------------------------------------------
てことは、$in{'img'}をopen DATA,"$in{'img'}";する必要があるってことです?
0417412
04/10/30 14:08:03ID:zVFP7DHQみなさまありがとうございました。
0418nobodyさん
04/10/30 14:28:37ID:???諦めた方がいいね
0419nobodyさん
04/10/30 15:15:30ID:???英数字が使えて、最初の文字列にのみ数字を禁止するような
正規表現はどのようにすればいいでしょうか?
正規表現難しすぎる・・・。本読んでも頭がこんがら・・・
分かりやすいサイトあったら教えてください
0420nobodyさん
04/10/30 15:27:19ID:???http://pc5.2ch.net/test/read.cgi/php/1069245758/ に入門しる
0421nobodyさん
04/10/30 17:16:32ID:???車輪の再発明ではなく勉強のためなら↓を見るよろし。シンプルだ。
ttp://tohoho.wakusei.ne.jp/cgi/wwwupl2.txt
実用化するにはもう少し手を加えたほうがよいが。
0422nobodyさん
04/10/30 20:00:53ID:M6l56cQxcgiの再起呼び出しは可能なのでしょうか。
cgi上のフォーム で、cgiの一部を書き変えたいのですが。
0425nobodyさん
04/10/30 23:39:13ID:???1 -> 2 -> 3
と変更していく変数$aを作りたいのですが、
どうすればいいでしょうか?
大まかな方法は何となく分かるんですが、
ロック制御などについてよく分かりません。
0426nobodyさん
04/10/30 23:39:44ID:JL00AQ8N0427nobodyさん
04/10/30 23:58:31ID:???0428nobodyさん
04/10/31 06:04:57ID:PbybcUUPと
s/abc/c/;
s/bbc/c/;
とではどっちが速いですか?
0429nobodyさん
04/10/31 06:43:53ID:/9xW7Y/Dとして、
$query->param('File')
で受け取った値を、同じ(type="file")として別のCGIなどに
渡す事はできないのでしょうか?
調べてみたところ、(type="file")はセキュリティのため、
初期値を設定したりスクリプトで値を操作することが出来ないとされており、
同じ内容を受け渡す事ができず、困っております。
よろしければ、おしえてください。
0431nobodyさん
04/10/31 07:46:09ID:???0432nobodyさん
04/10/31 08:21:16ID:???これらの対応する変数の大きい順番に処理A,B,C,Dを行いたいのですがどうすれば良いでしょうか?
0433nobodyさん
04/10/31 08:23:04ID:???出来ないように作られているので出来ない。
出来るようにすると、お前以外の世界中の人が困るようになるので、出来るようには出来ない。
0434nobodyさん
04/10/31 08:34:02ID:???さんざんガイシュツだがLWP。HTTP::Request::Commonのマニュアルに
例つきで説明されてるのでよく読め。
0435nobodyさん
04/10/31 12:18:51ID:???パスワード認証画面が携帯電話(au W11H)で表示することができないです
<tr>
<td class="ent2">
<table border=0 cellpadding=0 cellspacing=5 width="100%">
<tr>
<td colspan=2>$title</td>
</tr>
<tr>
<td>ユーザー名 :</td>
<td><input type=text name=id size=15 value="$cid"></td>
</tr>
<tr>
<td>パスワード :</td>
<td><input type=password name=pw size=15 value="$cpw"></td>
</tr>
<tr>
<td></td>
<td><input type=checkbox name=cook value="1" $checked>
パスワードを記憶する</td>
</tr>
<tr>
<td colspan=2 align=right height=50 valign=bottom>
<input type=submit value=" OK ">
<input type=reset value="キャンセル"></td>
</tr>
</table>
行数足りなくて最後の方ちょっと省略しましたが
これを携帯で表示させるにはどうすればいいのでしょうか?
0436nobodyさん
04/10/31 14:15:22ID:???丸投げ改造スレへドゾー。
0437nobodyさん
04/10/31 14:18:58ID:???lsコマンド使って、Bサーバのあるディレクトリの一覧を取得するようなことは
可能でしょうか?
0438nobodyさん
04/10/31 14:32:57ID:???いくつかのやり方に応じて適切な条件が揃わないとできんよ。
つーか、逆に言うとそれをやられないように作られてるんだから。
0439nobodyさん
04/10/31 16:29:29ID:???しかし初心者だけにセキュリティ的な部分が非常に気になります・・・。
何かセキュリティ的に大丈夫かどうかチェックする方法ないですかね?
2chでさらす以外で。
他の初心者さんたちはどうしてるんだろ?
0440nobodyさん
04/10/31 16:37:53ID:???じゃなきゃ自分が上級者になる。
0441nobodyさん
04/10/31 22:09:05ID:???只でやりたかったら、どっかで晒すか知り合いに頼むしかないだろ。
金かける気があるならhttp://www.softek.co.jp/Sec/WebProbe/のようなツール使う。
0443nobodyさん
04/10/31 23:47:52ID:???XSSは当然として、セッションハイジャックやSQLインジェクションなど
その他色々。
0445nobodyさん
04/11/01 01:09:12ID:CTnWn+hAうるせーー!!!!!
0446nobodyさん
04/11/01 04:25:18ID:rUgrlUVh月がOctのように英語表記になってしまいます。
これはどのように数字に変更すればいいのでしょうか?
0447nobodyさん
04/11/01 10:51:27ID:???%Month = (Jan=>1, Feb=>2...)みたいなハッシュを用意しといてひけば
とりあえず数字にはなる。
0448nobodyさん
04/11/01 13:02:20ID:???みたいに12行書く。
0449nobodyさん
04/11/01 13:03:07ID:???0450nobodyさん
04/11/01 19:42:22ID:IPrYAMkf100単位でのキリ番は、
$a = substr("カウント値",-2,2);
if($a eq '00'){ print "キリ番"; }
で処理しています。
連番に関してはなかなかいいアイディアが思い浮かびません。
参考となるカウンターやアイディアをご教授ください。
0451nobodyさん
04/11/01 19:52:51ID:???0454nobodyさん
04/11/01 21:05:16ID:IPrYAMkf確かにダサイのですが要望があったので色々と試してました。
0の連続するきっちりのキリ番やゾロ目なら数十桁くらいを配列にいれて
比較してたのですが、連番となると数が多すぎて…
0455nobodyさん
04/11/01 21:17:07ID:???キリ番やゾロ目なら正規表現使う方が賢明だろう
連番はアイデアがないが
「自分が数字を見たとき連番かどうかをどうやって判断しているのだろう?」と
自分の頭の中の認知回路を自己分析してみると
実装可能なアルゴリズムを思いつけるかもしれん
0456nobodyさん
04/11/01 21:18:46ID:???sub zorome { my($x)=@_; $x % ('1' x length($x)) == 0; }
連番:
sub renban { my($x)=@_; zorome($x - substr('123456789', 0, length($x)-1));}
あたりでどう?
0457nobodyさん
04/11/01 21:25:11ID:hZSImnu8while(($var =~ /(\d)/) and ($var =~ s/$1{3}//)){print "連番やん\n";}
0458450
04/11/01 21:49:58ID:IPrYAMkf>>456、>>457様、ありがとうございます。
教えて頂いたものは負荷も少なく凄いです。
正規表現に疎いためまだ理解できていないのですが…
連番は何個からとかは特に決めていません。
12でも連番のキリ番として扱う予定です。
>>457様
$varに数値をいれるとして、$1の部分が理解できません。
これだと例えば1114も連番となってしまいますか?
0459nobodyさん
04/11/01 22:11:56ID:???0460nobodyさん
04/11/01 22:35:50ID:???$x =~ /^(\d)\1*$/
なのでこっちの方がシンプルかも? (最初が数字でその後0個以上の
同じ数字が文字列の最後まで続く)
最低n桁にしたければ*のところを{n-1,}にすればいい。たとえば
最低4桁なら
$x =~ /^(\d)\1{3,}$/
0461nobodyさん
04/11/01 22:38:27ID:???index("123456789", $x) >= 0
という手もある
0462nobodyさん
04/11/01 23:26:45ID:???入力チェックが効果的ってどっかで見た気がするが。
0463450
04/11/01 23:27:32ID:IPrYAMkf>>460、>>461様ありがとうございます。
正規表現でのゾロ目チェックは参考になりました。
連番でindexを使うのは気付きませんでした。
マルチだし、ハイジャックて・・・
0466nobodyさん
04/11/02 00:52:58ID:???セッション管理を必要としない仕様にする。
SQLを必要としない仕様にする。
そもそもセッション管理やSQLを使用しているのか疑問なのだが。
使用しているのならどこが穴になるのか想像できるはず。
ttp://www.atmarkit.co.jp/fsecurity/special/30xss/xss01.html
ttp://www.atmarkit.co.jp/fsecurity/rensai/webhole01/webhole01.html
0467nobodyさん
04/11/02 08:25:16ID:s3D5jAc8サイズはあっているのですが画像の上の10%くらいで変換がおわってあとは真っ黒になります
なにが原因なのでしょうか
use Image::Magick;
$i = Image::Magick->new;
$i->Read('test.jpg');
$i->[x]->Scale("200");
$i->Write("temp.jpg");
0468nobodyさん
04/11/02 09:46:11ID:???0469462
04/11/02 10:19:20ID:???0471467
04/11/02 10:55:21ID:MX3i4yL1$i = Image::Magick->new;
$i->Read('test.jpg');
$i->Resize(width=>200, height=>150, blur=>0.7);
$i->Write("temp.jpg");
これも駄目でした
0472nobodyさん
04/11/02 11:55:28ID:???なんか出てるかもよ。
ttp://www.imagemagick.org/www/perl.html#erro
0473nobodyさん
04/11/02 14:27:15ID:???使う事は出来ないんでしょうか?
foreach(@list){
if(/$pattern/$a){
print "true";
}else{
print "false";
}
}
正規表現を勉強しようと、
CGIで正規表現と複数の文字列をPOSTし、
文字列がマッチするか検証するスクリプトを書いています。
0476nobodyさん
04/11/02 18:01:53ID:???$a=4 if $b;
$b=5 if $b;
と
if($b){
$a=4;
$b=5;
}
なんか{}(ブロック)をなくす方が処理が早いみたいなこと聞いて
こんなつまらないことで悩んでる状況。
0477nobodyさん
04/11/02 18:19:17ID:???その月が何日が最終日なのかを調べるほうほうは
どのようにつくればいいのでしょうか?
0478nobodyさん
04/11/02 18:22:06ID:???0479nobodyさん
04/11/02 18:41:26ID:???それがものすごい回数繰り返されるループの中とかなら、
ベンチとって選べ。
そうでなければどうせ誤差ぐらいしか違わないから自分が
見やすいと思うほうにしとけ。
一般論としては、動くの作って動作速度に不満が出てから
プロファイラでどこが時間食ってるか調べて集中的に直せ、
と言われているようだ。
軽くベンチした感じでは、$bがfalseならif(){}の方が
3倍ぐらい早いが、$bがtrueなら25%ぐらい遅い。
0480nobodyさん
04/11/02 18:52:04ID:???my($y,$m) = (shift,shift);
my @days = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
return 0 unless (1 <= $m and $m <= 12 );
$m-- == 2
? $days[$m] + ($y % 4 == 0) - ($y % 100 == 0) + ($y % 400 == 0)
: $days[$m];
}
■ このスレッドは過去ログ倉庫に格納されています