Perlコーディング初心者質問スレ Part 46
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
2006/01/18(水) 02:17:46ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0870nobodyさん
2006/02/24(金) 08:17:49ID:???0871nobodyさん
2006/02/24(金) 10:45:19ID:???0872nobodyさん
2006/02/24(金) 10:59:30ID:???0873nobodyさん
2006/02/24(金) 12:35:39ID:???1. 日本語文字列を使っている: YES => 2, NO => 30
2. Shift_JIS を使っている: YES => 10, NO => 3
3. EUC-JP を使っている: YES => 5, NO => 4
4. UTF-8 ...
みたいな。
0874nobodyさん
2006/02/24(金) 12:37:35ID:???使いやすければ使うし、そうでなければ無駄働きw
0875nobodyさん
2006/02/24(金) 13:17:52ID:???0876nobodyさん
2006/02/24(金) 13:49:15ID:???0877nobodyさん
2006/02/24(金) 13:51:23ID:???0878nobodyさん
2006/02/24(金) 13:55:04ID:???Shift_JIS のスクリプトにはお答えできません
0879nobodyさん
2006/02/24(金) 15:59:44ID:hXh5LOuqこちらで質問させて頂きます。
サーバのローカル上にある画像ファイルのMIMEタイプを
判別したいのですが、どうすればよろしいでしょうか?
GIFとJPEGが区別できるだけでいいです。
できることならモジュールとか使わず、
今のスクリプト上にシンプルに書きたいのですが。
0880879
2006/02/24(金) 16:03:26ID:hXh5LOuq画像のMIMEタイプって変ですね…。
画像のフォーマットの種類を判別したいのです。
よろしくお願い致します。
0881nobodyさん
2006/02/24(金) 16:22:19ID:???0882nobodyさん
2006/02/24(金) 16:24:24ID:???$file = $_[0];
open (FILE, "$file");
read (FILE, $data, 4);
close (FILE);
($type) = unpack ("H4", $data);
if ($type eq "ffd8") {
$type = "jpg";
} elsif ($type eq "8950") {
$type = "png";
} elsif ($type eq "424d") {
$type = "bmp";
} elsif ($type eq "4749") {
$type = "gif";
} else {
$type = "知るかボケ";
}
return ($type);
}
0883nobodyさん
2006/02/24(金) 16:45:12ID:???口悪くて性格も悪いやつもかなり混じってるけど。
0884879
2006/02/24(金) 16:53:33ID:hXh5LOuqどうもありがとうございます。
画像なんて普段扱わないから、さっぱり?でした。
>>883
ほんとですねw
0885nobodyさん
2006/02/24(金) 17:38:26ID:???特に問題は発生しないだろうけど、Win も考えるなら read の前に binmode を
0886nobodyさん
2006/02/25(土) 01:58:25ID:qE7CF1Aw外部ファイル呼び出しについて質問なのですが、呼び出し時に関数を
与えて呼び出す事は可能なのでしょうか?
ニュアンスとしましてはmain.cgiというソースの中に外部ファイル
(gaibu.cgi)を呼ぶ時にgetデータの送り方のように
require("gaibu.cgi?data=1");
としてgaibu.cgiへdata=1という関数を引き渡したいのですが・・・
main.cgiから渡されたdata=1というのをチェックして、gaibu.cgiの方で
main.cgiへ引き渡す関数を指定したいのですが。
妙な文章で申し訳ありませんが、どなたか宜しくお願い致します。
0887nobodyさん
2006/02/25(土) 02:23:48ID:???0888nobodyさん
2006/02/25(土) 02:28:14ID:???0890nobodyさん
2006/02/25(土) 02:48:36ID:???0891nobodyさん
2006/02/25(土) 02:54:14ID:???0892nobodyさん
2006/02/25(土) 02:56:47ID:???0893nobodyさん
2006/02/25(土) 02:58:46ID:???$ENV{"REQUEST_METHOD"} = "GET";
$ENV{"QUERY_STRING"} = "data=1";
my $data = `gaibu.cgi`;
0896nobodyさん
2006/02/25(土) 11:37:16ID:JV6sbN7wを読み込んで、その最終行だけを行ごと削除して出力したいのですが
ググっていろいろ調べて試したんですがうまくいきません。
よろしくお願い致します。
0898nobodyさん
2006/02/25(土) 13:50:14ID:???ロックとかエラー処理は自分で付け加えてね
open(IN, "inputfile.csv");open(OUT, ">outputfile.csv");while(my $inline = <IN>){if($inline =~ /XXX/){print OUT $inline;}}close(IN);close(OUT);
… どこのセルにXXXが含まれてるか分からんからこれ以上は無理
0899nobodyさん
2006/02/25(土) 13:51:44ID:???if(!($inline =~ /XXX/)){〜
0900nobodyさん
2006/02/25(土) 14:08:44ID:???0901nobodyさん
2006/02/25(土) 15:47:11ID:???0902nobodyさん
2006/02/25(土) 16:01:54ID:???0904nobodyさん
2006/02/25(土) 18:21:00ID:???>>901 と >>902 が上級者である根拠は?
0905nobodyさん
2006/02/25(土) 18:22:11ID:???0906nobodyさん
2006/02/25(土) 18:26:41ID:???0907nobodyさん
2006/02/25(土) 18:26:45ID:???0908nobodyさん
2006/02/25(土) 18:27:58ID:???0909nobodyさん
2006/02/25(土) 21:51:05ID:???0910nobodyさん
2006/02/25(土) 22:35:17ID:???今Perlの勉強の為に掲示板を作ってるんですが、
例えば十バイト毎に段落を変えたい場合どうすれば良いのでしょうか?
なにとぞご教授下さい。
0911nobodyさん
2006/02/25(土) 22:37:34ID:???0913nobodyさん
2006/02/26(日) 00:33:33ID:???0914nobodyさん
2006/02/26(日) 00:39:08ID:???1) 10バイトを別の文字列にコピー
2) その文字列を正規表現などで、正しい文字列かチェック
3) 正しくなければ、1バイト減らしてコピーして2)へ戻る
4) 正しければ終了
0915nobodyさん
2006/02/26(日) 02:24:54ID:???0916nobodyさん
2006/02/26(日) 14:45:09ID:???0917nobodyさん
2006/02/26(日) 16:03:42ID:QDNmTDhHですが宜しくお願い致します。
Q.関数の値を代入する際、サイズの制限はあるのでしょうか?
例えば私が考えているので
$test = "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">・・・";
などのように関数にそのままHTMLソースを入れているのですが結構なサイズ
になってしまうので不安です。
0918nobodyさん
2006/02/26(日) 16:05:28ID:???> ですが宜しくお願い致します。
ということにしたいのですね。:)
ちなみにどう「初め」たのか教えてください。
0919nobodyさん
2006/02/26(日) 17:06:28ID:???2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
もちろんどこまで「結構なサイズ」が変数に代入できるかを試した上での質問だよな?
0920nobodyさん
2006/02/26(日) 17:11:02ID:???自鯖でテストしろよ
0922nobodyさん
2006/02/26(日) 17:55:40ID:???0923nobodyさん
2006/02/26(日) 18:01:28ID:???0924nobodyさん
2006/02/26(日) 18:09:45ID:???末期かな
0925nobodyさん
2006/02/26(日) 18:23:15ID:???0926nobodyさん
2006/02/26(日) 18:57:50ID:???ごめんなさい、自鯖というのは何でしょうか?
それでテストということは、テストを行う環境ということでしょうか?
0927nobodyさん
2006/02/26(日) 19:40:19ID:???0928nobodyさん
2006/02/26(日) 19:48:41ID:???0929nobodyさん
2006/02/26(日) 21:04:48ID:???0930nobodyさん
2006/02/26(日) 21:54:22ID:???どのように書いたら良いのでしょうか?変数の選び方が間違っているのでしょうか?
ちなみに、現在は下のプログラムで、"192.168.0.1:80"をポートチェックしています。
for ($i = 0; $i<3; $i++)
{
$port=80;
$ip_add=192.168.0.1;
#↑の行を $ip_add=192.168.0.1+$i; みたいにしたい。
&CheckPort($portNo,$ip_add);
}
0931勉強中
2006/02/26(日) 22:16:58ID:???「NULL」と「LOW-BALUE(1バイトの'00')」は
違うものなのでしょうか???
0932nobodyさん
2006/02/26(日) 22:33:06ID:???0933nobodyさん
2006/02/26(日) 22:35:33ID:???32bits整数にしちゃうと楽かも♪
0935nobodyさん
2006/02/26(日) 22:57:08ID:???Cと違ってperlは文字列長を管理してるからヌル文字が境界にならない。
1文字だけの文字列を作っても、
内部ではreallocが多くならないように、長めにメモリが割り当てらる。
で、文字列長は1文字、とスカラ構造体のどっかに値が入る。
なので文字列にヌル文字入ってても平気。
0936nobodyさん
2006/02/26(日) 23:59:32ID:???my $port = 80;
for (my $x = 0; $x < 256; $x++) {
for (my $y= 0; $y < 256; $y++) {
my $ip_addr = sprintf("192.168.%d.%d", $x, $y);
CheckPort($port, $ipaddr);
}
}
0937nobodyさん
2006/02/27(月) 00:22:17ID:???0939nobodyさん
2006/02/27(月) 01:17:08ID:???ただ、自分の環境でしかテストしてないので間違いがあるかもしれないです
戻り値が 0 の場合はエラー判定してください
sub ip2dec{
my($ip) = $_[0];
my($basedec) = 256 * 256 * 256 * 256; # ベースとなる値
my(@quadip) = (0, 0, 0, 0);
my($ipdec) = 0; # 10進に変換された IP
@quadip = split(/\./, $ip);
# 全ての値が 0 〜 255 に収まってるかチェック
for(my $i = 0; $i < 4; $i++){
if(($quadip[$i] < 0) || ($quadip[$i] > 255)){
return 0;
}
}
for(my $i = 0; $i < 4; $i++){
$basedec = $basedec / 256;
$ipdec += $basedec * $quadip[$i];
}
return $ipdec;
}
0940nobodyさん
2006/02/27(月) 01:17:53ID:???shift 使えよ。
0941nobodyさん
2006/02/27(月) 01:23:23ID:???my($ip) = $_[0] || "";
0942nobodyさん
2006/02/27(月) 01:29:03ID:???取りあえずfor (my $x = 0; $x < 256; $x++)→for (0 .. 256)な。
0943nobodyさん
2006/02/27(月) 01:29:05ID:???0945nobodyさん
2006/02/27(月) 01:49:09ID:???foreach(1..65537){
print join('.', @ip), "\n";
foreach(reverse @ip){
($_ = $_+1 & 255) and last;
}
}
0946nobodyさん
2006/02/27(月) 01:52:39ID:???でさ、65537 って、0x10001 なんだけど。
0947nobodyさん
2006/02/27(月) 01:58:31ID:???$x なんて使ってないし・・・
>943
my($ip) = $_[0] || "";
そこには書かれてないけど
if(!$ip){ return 0; }
で抜けるようにした
ちなみに
&ip2dec("220.110.54.66");
みたく呼ばれることを想定
0948ヽ(´ー`)ノ ◆.ogCuANUcE
2006/02/27(月) 01:59:20ID:???0949nobodyさん
2006/02/27(月) 02:00:59ID:???出来るところは自分で書いた次第です
0950945
2006/02/27(月) 02:02:33ID:???foreach(0..65536){
print join('.', unpack("C4", pack("N", $ip+$_))), "\n";
}
>>946
ただのカウンタだから。
カウントする回数は適当にどうぞ。
0951nobodyさん
2006/02/27(月) 02:02:44ID:???すごいスーパーハカーですね。
for ($x = 0; $x < 256; $x++)
と
for $x (0 .. 256)
って同じ結果を得られるんですかね?
0953nobodyさん
2006/02/27(月) 02:04:32ID:???0954nobodyさん
2006/02/27(月) 02:05:17ID:???それでforのなかで$xが扱えるの?
いい事しりました
0955nobodyさん
2006/02/27(月) 02:06:48ID:???うっせ!そんなので下らない文字レスするなハゲ!あああ、私が悪うござんした。ケアレスミスぐらい多めに見ろやハゲ。
0956nobodyさん
2006/02/27(月) 02:07:28ID:???デスマ中でつか?
0957nobodyさん
2006/02/27(月) 02:08:31ID:???0958nobodyさん
2006/02/27(月) 02:11:54ID:???0959nobodyさん
2006/02/27(月) 02:12:47ID:???0960945
2006/02/27(月) 02:14:36ID:???これ忘れ物ですよ。
ttp://images-jp.amazon.com/images/P/4759222197.09.LZZZZZZZ.jpg
0961nobodyさん
2006/02/27(月) 02:21:18ID:???0962nobodyさん
2006/02/27(月) 03:10:33ID:???0963nobodyさん
2006/02/27(月) 07:31:56ID:???0964nobodyさん
2006/02/27(月) 08:37:23ID:???$string =~ s/?([0-9]+);/chr($1)/eg;
print $string; #ABC
0965nobodyさん
2006/02/27(月) 08:38:12ID:???my $string = "ABC"
0966nobodyさん
2006/02/27(月) 09:47:10ID:???0967nobodyさん
2006/02/27(月) 09:59:42ID:???0968nobodyさん
2006/02/27(月) 10:15:42ID:???0969nobodyさん
2006/02/27(月) 23:11:57ID:???可能であれば教えてくらはい。
ページAからページBに遷移した場合は1としてカウントし、
ページB内で何度更新しても1としてカウントする。
ページBからブラウザの戻るボタンを押してページAに戻り
再びページBに戻ってきた場合は1としてカウントする。
ただし、ページAはこちらでは操作出来ない(弄くれない)ものとする。
最初はリファラーチェックすればいけるかなぁと思ったんですが
ページAから遷移した状態のページBで何度更新してもページAの
リファラーが返っていたのでタメポですた。
何かいい案があれば教えてくらはいませ〜。
0970nobodyさん
2006/02/27(月) 23:27:41ID:???なのでページBでリロードしてもクッキーが取得できないのでカウントアップしない
ってのはどうだろか
レス数が950を超えています。1000を超えると書き込みができなくなります。