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

Perlコーディング初心者質問スレ Part 60

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/09/03(木) 23:51:12ID:???
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

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

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

お勧めサイトは >2 以降

前スレ http://pc11.2ch.net/test/read.cgi/php/1234752149/
0477nobodyさん2010/01/08(金) 06:01:19ID:???
>>475
diffってコマンドは知ってるよね?Macには標準で入ってるし、
Winもdiffで検索すれば比較ソフトは出てくる。
俺がお勧めなのはvimdiffだがな。
04784752010/01/08(金) 19:43:24ID:???
PHPとperlを間違えました。(´・ω・`)PHPスレ逝ってきます。
ごめんなさい。
0479nobodyさん2010/01/10(日) 01:28:27ID:???
http://tvipper.sytes.net/
Perlで組んでいるらしいのだが
負荷に耐えられないと嘆いてる。誰か助けてやってくれ
0480nobodyさん2010/01/10(日) 02:34:52ID:???
vipのことはvip内で処理しろよ
それはさておき、どんなに頑張ってもコードだけじゃ解決できない問題のような気がするぞ
サーバを増やすなどしてスケールアウトするのが一番なんじゃね
0481nobodyさん2010/01/10(日) 19:02:07ID:???
スレ違いだよVIPで死ね
0482nobodyさん2010/01/11(月) 09:59:05ID:???
>>479
Twitterタイプのサービスか?
Twitterがどれだけ設計とスケールに苦労して今の状態を維持してるのか
1000回くらいググってから出直せ。
0483nobodyさん2010/01/12(火) 23:50:01ID:???
そういやtwitterどーなってんだろ。ユーザidが変えられるのが斬新過ぎる
0484nobodyさん2010/01/13(水) 07:23:08ID:???
>>483
最新のtweet、ちょっと古いtweet、もっと古いtweetとサーバーを分けて
それぞれ必要なだけスケールする手法を取ってた気がする。
また変えたかも知れんが。
0485nobodyさん2010/01/17(日) 17:46:44ID:???
Arkansasという文字にはaが3つ含まれて居ますが、
これ(a)を数える方法を教えてください。
0486nobodyさん2010/01/17(日) 17:49:09ID:???
$hoge = tr/Aa//;
もしくは
$hoge = s/(a)/$1/ig;
0487nobodyさん2010/01/17(日) 17:50:17ID:???
$_="Arkansas"; の場合な
04884852010/01/17(日) 17:55:30ID:???
nobodyさんありがとうございます!
0489nobodyさん2010/01/17(日) 18:17:50ID:Ido2Vdjf
何もレスしてないのにありがとうなんて照れるなぁ
0490nobodyさん2010/01/17(日) 19:52:03ID:???
>>484
脳味噌のレベルが低いって事
つまりお 前 の 事 だ
0491nobodyさん2010/01/18(月) 15:49:13ID:???
助けてくださいお願いします。
以下のようなハッシュがあります。

$SERIAL = {
'1263794915' => {
'link' => 'http://localhost.com/',
'delete_flg' => '1',
'day_end' => '2010/01/15 24:10:19',
'title' => 'そろそろ',
'day_start' => '2009/12/15 24:10:19'
},
'1263794833' => {
'link' => 'http://localhost.com/',
'delete_flg' => '1',
'day_end' => '2010/02/15 24:10:19',
'title' => '本当におねがいします',
'day_start' => '2009/12/15 24:10:19'
},
'1263794894' => {
'link' => 'http://localhost.com/',
'delete_flg' => '1',
'day_end' => '2010/02/15 24:10:19',
'title' => 'とりあえずこれでおいておくか',
'day_start' => '2009/11/15 24:10:19'
},
};

$hash{'ID'}{'day_start'} の 開始日付でソートしたいのですがどうすればよろしいでしょうか?
0492nobodyさん2010/01/18(月) 16:12:12ID:r5bEwLM5
sort keys($SERIAL);

だけでいいような気がする
0493nobodyさん2010/01/18(月) 16:15:20ID:???
それじゃ無理だろ
0494nobodyさん2010/01/18(月) 16:32:26ID:r5bEwLM5
ごめキーしか見てないねw
0495nobodyさん2010/01/18(月) 16:34:05ID:???
@keys = sort {$a <=> $b} (map {$SERIAL->{$_}->{day_start}} keys %$SERIAL);
@keys = map{s/\///g} @keys;
@sort_keys = sort {$a <=> $b} @keys;

何がやりたいのか分からんけどこれでいいか?
0496nobodyさん2010/01/18(月) 16:36:10ID:???
my @ids = sort {
  $SERIAL->{$a}->{day_start} cmp $SERIAL->{$b}->{day_start}
  # 文字列比較だから時刻に24時とか0時が混在してると変なことになるので、
  # それが嫌ならstrptimeとかtimelocalでエポックに戻して数値比較するなりなんなり。
} keys %$SERIAL;

for my $id (@ids) {
  # やりたい処理
  print $SERIAL->{$id}->{ほげほげ}, $/;
}

ソート後のを元の$SERIALと同じ形式で格納するのはハッシュリファレンスじゃ無理。
0497nobodyさん2010/01/18(月) 16:36:21ID:r5bEwLM5
sort { $a->{'day_start'} cmp $b->{'day_start'} } keys($SERIAL);


かな?
携帯からソース書くのって面倒臭いね
0498nobodyさん2010/01/18(月) 16:37:11ID:???
あ、
@keys = map {$SERIAL->{$_}->{day_start}} keys %$SERIAL;
@keys = map {s/\///g} @keys;
@sort_keys = sort {$a <=> $b} @keys;

こうだったわ
0499nobodyさん2010/01/18(月) 16:46:12ID:???
うわ、後もう一つミスがあった

@keys = map {$SERIAL->{$_}->{day_start}} keys %$SERIAL;
@keys = map {s/[/:\s]//g} @keys;
@sort_keys = sort {$a <=> $b} @keys;
0500nobodyさん2010/01/18(月) 17:03:19ID:???
>>491
DateTimeでオブジェクトにしようとしたら24時ってあってうまくいかなかった。
つか、みんな頭いいな。

必死にindex作ってたよ
# day_startのDateTimeをkeyにしたhash
my %SERIAL_id_of;
my $fmt = DateTime::Format::Strptime->new(pattern => '%Y/%m/%d %T');
for my $id (keys %{$SERIAL}) {
  my $datetime_of_day_start = $fmt->parse_datetime($SERIAL->{$id}->{day_start});

  alias my $ids_ref = $SERIAL_id_of{$datetime_of_day_start};
  if ($ids_ref) {
    push @{$ids_ref}, $id;
  }
  else {
    $ids_ref = [$id];
  }
}

warn Dumper %SERIAL_id_of;

my @sort_ids;
for my $datetime_of_day_start (sort keys %SERIAL_id_of) {
  push @sort_ids, @{$SERIAL_id_of{$datetime_of_day_start}};
}

warn Dumper @sort_ids;
0501IT土方~バグ蔵 ◆qOWUwFXrL2 2010/01/19(火) 09:03:22ID:???
>>492-500
ありがとう!!!!
0502nobodyさん2010/01/19(火) 15:02:27ID:???
質問させてください。
最後の行あたりでよくわからないエラーをはいてしまい、実行すらできません。。

#円周率の近似値を求めるプログラム

$count=0;
for($n=1; $n<=1000; $n++){

$x=(rand);
$y=(rand);

$point = ($x * $x) + ($y * $y);

if($point<1){
$count++;
}

$pi= $count / $n;
$pi= sprintf "%.8f";
$pi= pi * 4;
printf "the loop repeated %d time",$n;
printf "pi is %.8f",$pi;
0503nobodyさん2010/01/19(火) 15:06:31ID:???
そのよくわからないエラーとやらもさらせよ。
0504nobodyさん2010/01/19(火) 15:09:10ID:???
forの{が閉じてない
0505nobodyさん2010/01/19(火) 15:09:51ID:???
Unquoted string "pi" may clash with future reserved word at ...
Missing right curly or square bracket at ...
0506nobodyさん2010/01/19(火) 15:28:07ID:???
なぜprintf関数を使うのか理解できない
0507nobodyさん2010/01/19(火) 18:54:30ID:???
助けてください。
以下の処理で文字コードの関係により困ってます。
クライアント側のjavascriptでjsonファイルを扱います。
jsonファイルはPerlの「print $jsonobj」によって吐き出します。
PerlscriptはUTF-8、jsファイル・htmlファイルはshiftjisです。
PerlでEncodeによりutf8→shiftjisにしているのですが、それ以外になにかやる事があるのでしょうか?

☆☆☆javascript☆☆☆
document.write('<script type="text/javascript" src="Perlで書いたjsonファイルをはくプログラム"></script>');

☆☆☆ Perl ☆☆☆☆
$jsonobj = q| array_jeson = |.$jsonobj;
Encode::from_to($jsonobj,'utf8','shiftjis');
print $jsonobj;
0508nobodyさん2010/01/19(火) 19:26:16ID:???
>>507
>>1
05095072010/01/19(火) 19:27:54ID:???
事故解決しました
Content-Type: text/html; charset=☆☆☆\n\n
☆☆☆の部分がミスってただけでした orz
UTF-8で出力したりいろいろパターンがあってミスってました
0510nobodyさん2010/01/21(木) 00:41:21ID:???
worker MPMを使用したApache上でPerl-CGIを動作させる上で注意することはありますか?
mod_perlのように、グローバル変数を使うと同じプロセス内の別スレッドから見えてしまうということはあるのでしょうか。
また、1リクエスト1プロセスを前提にした time . $$ の値は、同時に複数のリクエストで同じ値を持ちうるのでしょうか。
同一プロセスでもスレッドを識別するための情報を識別する環境変数はありますか?
thread-safeなPerlプログラミングの記事やドキュメントなどをご存知でしたらどなたか教えてください。
0511nobodyさん2010/01/21(木) 17:39:33ID:???
500エラーについて教えて下さい。

・print "Content-Type: text/html\n\n";以降の行にコメントを書く → 500エラー

・HTML::Templateのサンプルそのままコピって、my $tmpl_out = $template->output; → 500エラー
 my $out = $template->output;
 print "$out";ならセーフ。

ちょっと厳格すぎる気がするのですが、こんなモンでしょうか?
0512nobodyさん2010/01/21(木) 18:24:54ID:rPXIzyqa
500 Internal Server Error に厳格も寛容もなくて
premature end of script headers を食らうようなコードを書いてるだけだと思うんだけど。

perl -Tc script.cgi

これでずらずらとお知らせが出て来ない?
0513nobodyさん2010/01/21(木) 18:39:16ID:???
>>511
全角空白を入れてたり改行コードが実行環境に合ってなかったりってのがありがち

>>512
-W や -w でなく -T なのか
0514nobodyさん2010/01/21(木) 19:00:48ID:???
>>513
なんで -T なんだよといま自分に突っ込んでる。ごめん。
0515nobodyさん2010/01/22(金) 11:47:37ID:???
ハッシュで、
%hash = qw(
  1 foo
  2 hoge
  3 bar
);
という書き方がとてもラクで気に入っているのですが、
これで二次ハッシュを書くにはどうしたら良いのでしょうか?
以下のようにするとダメでした。
my %hash = qw(
  Friend {
    hoge Perl
    foo Perl
  }
  Enemy {
    fuga Ruby
  }
);
qw使っては無理でしょうか?
0516nobodyさん2010/01/22(金) 12:16:25ID:???
まずqwの意味とかハッシュとかリファレンスをちゃんと理解したほうがいい

こういう風になら書けるが見づらいだけなのでおすすめはしない
my %hash = ( Friend => { qw/hoge Perl foo Perl/ }, Enemy => { qw/fuga Ruby/ } );
0517nobodyさん2010/01/22(金) 13:01:13ID:???
>>515
そのままじゃ無理だね。

( 'Friend', '{', 'hoge', 'Perl', 'foo', 'Perl', '}', 'Enemy', '{', 'fuga', 'Ruby', '}' )

というリストをパラメータでもらい、'{', '}'を解釈して

( 'Friend', { 'hoge', 'Perl', 'foo', 'Perl' }, 'Enemy', { 'fuga', 'Ruby' } )

というふうに組み替えてくれるサブルーチンqwhashを作って

my @hash = qwhash qw(...);

とすればいいんじゃね?
0518nobodyさん2010/01/22(金) 13:01:56ID:???
sub qwhash {
my(@l) = @_;
my @stack = ();
my $r = [];

while (@l) {
my $x = shift @l;

if ($x eq '{') {
push @stack, $r;
$r = [];
} elsif ($x eq '}') {
@stack or die "too many '}'";

push @{$stack[0]}, {@$r};
$r = pop @stack;
} else {
push @$r, $x;
}
}

@stack == 0 or die "too few '}'";

return @$r;
}
0519nobodyさん2010/01/22(金) 14:18:53ID:BvoGYaqc
既出かもしれませんが、CGIを書いていてある場合だけは、出力を
index.htmlにした方がいいと気づきました。この場合
open(STDOUT, ">c:/xampp/htdocs/ほげほげ/index.html") || die "cannot open index.html";
とやってしまっていいものでしょうか?

実際にやってみた結果は、openは失敗せず、index.htmlも作られないという感じでした。
いまからprint 文を全部書き換えるのは面倒だなと思っているのですが、いい方法無いでしょうか?
0520nobodyさん2010/01/22(金) 14:40:44ID:???
>>519
既存のファイルハンドルを指定していきなりopenした場合は、自動的にcloseしてから
openしてくれるので、それでもいいはずだけどな。何か思い違いをしてないかよく
調べた方が良い。

別の方法としては、select FILEHANDLEでデフォルトのファイルハンドルを切り替える、
ってのもあるよ。
0521nobodyさん2010/01/22(金) 15:37:55ID:???
>>516-518
ありがとうございます。
自分でハッシュテーブル書くのにも空白使えないし、
変数引っ張ってくるのも危ないから、やっぱりqwは使わないようにします。

0522nobodyさん2010/01/22(金) 15:39:36ID:???
>>520
STDOUTをただ閉じるとApacheとのつながりが切れるのではないかと思いこうしました。
良くは調べてないのですが、教わった方法をやってみました。こちらはうまく
index.htmlが生成されました。ただ画面自体はエラーなんですね…
これをどうしようか悩んでいます。
0523nobodyさん2010/01/22(金) 17:25:23ID:???
>>519-522
こういう事をしたいの?

#!/usr/bin/perl -w
use strict;
use Fcntl qw(:flock);
my $file = './test.txt';

print "Content-Type: text/plain\n\n";

my $fh;
if ($ARGV[0]) { # ファイルへ
  open $fh, '>', $file or die $!;
  flock $fh, LOCK_EX;
  print "$file へ出力しました。";
}
else { # クライアントへ
  $fh = \*STDOUT;
}
print $fh 'foo!';
__END__
0524nobodyさん2010/01/23(土) 08:32:36ID:???
>>523
それだとあちこちを書き直さなければいけないので、それ以外の方法を模索していました。
結局STDOUTを切り替える前に
Content-type:text/html; charset=shift_JIS

<DOCTYPE>
<html lang="ja">
<html>
<head>
<meta http-equiv="refresh" content="0;url=../hoge">
</head>

<body bgcolor=#ffffff>
</body>
</html>
と出力するようにしました。
0525nobodyさん2010/01/24(日) 12:30:42ID:h+yaOkgW
プログラム板とどちらに質問しようかと思ったのですが、こちらにします。

if($picture) {
# print <<END_OF_MESSAGE;
# <center>
# <img src="$picture" alt="">
# </center>
# END_OF_MESSAGE
}

という部分がCGIにあるのですが、コメントをはずすとファイル終端でエラーがでます。
ヒアドキュメントは見よう見まねで他でも使っているのに、なぜここだけエラーになるのか
ヒアドキュメントについて詳しく書いた本を持っていないのでよく分かりません。
理由分かる方いましたら教えてください。
0526nobodyさん2010/01/24(日) 12:42:27ID:???
$s= <<END_OF_MESSAGE;
if($picture) {
# print <<END_OF_MESSAGE;
# <center>
# <img src="$picture" alt="">
# </center>
# END_OF_MESSAGE
}
END_OF_MESSAGE

きっとこうなってるのさ
0527nobodyさん2010/01/24(日) 12:47:04ID:???
いま試しに

my $picture

if($picture){
print <<END_OF_MESSAGE
<img src="$picture" alt="">
END_OF_MESSAGE
}

だけのファイルを作ってperl -cw してみたんですが

> syntax error at aaa.cgi line 3, near "){"
> Can't find string terminator "END_OF_MESSAGE" anywhere before EOF at aaa.cgi line 4.

とでます。やっぱり意味が分かりません。
なぜEND_OF_MESSAGEが見つからないということになるんでしょうか。
0528nobodyさん2010/01/24(日) 12:55:26ID:???
>>525
本がなければperldocを読めばいいじゃない。
http://perldoc.jp/docs/perl/5.10.0/perlop.pod#item__lt__lt_EOF_here_doc_heredoc_here_document__lt__lt_

>>527
my $picture の後ろに ; が無いから。
print <<END_OF_MESSAGE の後ろにもないけど、
これは if ブロック内の最後の文なので省略可能。
0529nobodyさん2010/01/24(日) 13:06:22ID:h+yaOkgW
>>528
perldocの最初の方だけ見て

my $picture="c:/xampp/htdocs/hoge.gif";

if($picture){
print <<END_OF_MESSAGE;
<img src="$picture" alt="">
END_OF_MESSAGE
}

と書き直してみましたが、
Can't find string terminator "END_OF_MESSAGE" anywhere before EOF at aaa.cgi line 4.
と出るのはかわりません。なぜでしょうか?
0530nobodyさん2010/01/24(日) 13:13:42ID:???
END_OF_MESSAGEの末尾にゴミ糞が付いてないか?
0531nobodyさん2010/01/24(日) 13:15:23ID:???
END_OF_MESSAGEスペース
だからじゃね
0532nobodyさん2010/01/24(日) 13:17:58ID:U2dkcd6K
自鯖で試したけど問題なかった
恐らくは改行コード・・・
0533nobodyさん2010/01/24(日) 13:19:28ID:???
そのとおりでした<スペース
お騒がせしました。Meadowの blank-mode は
常にオンにしておこうかな…
0534nobodyさん2010/01/24(日) 14:33:19ID:???
DB使えばいいのに
難しいこと全部やってくれるからオススメ。
初心者スレだから書いてみた。
0535nobodyさん2010/01/24(日) 16:59:34ID:U2dkcd6K
こうやってクソサイトが増えるのであった・・・
0536nobodyさん2010/01/28(木) 23:57:36ID:MprgKrS4
FreeBSDのサーバーからWindows系サーバー(2008R2)へ
Net::FTPを使ってファイルのアップロードを行おうと考えております。

今まではFreeBSDサーバーへのアップロードであったため
$ftp->cwd
$ftp->put
$ftp->ls
などのコマンドが使用出来ましたが、Windows系サーバー(2008R2)
の場合はこれらのコマンドは使用出来るのでしょうか?

どなたかご存知の方いらっしゃいましたらお願い致します。
0537nobodyさん2010/01/29(金) 00:21:05ID:???
2008R2だったらIIS用のFTP7.5があるべ
それくらいは大丈夫だよ
0538nobodyさん2010/01/29(金) 00:26:29ID:kJRAFybz
FTP を名乗ってるなら、基本的な動作は変わらないでし。
0539nobodyさん2010/01/29(金) 00:49:32ID:XeE9xFHb
>>537
>>538
接続先OSがwindowsの場合、lsコマンドなどは無いので、FTPのコマンドも
独自のものかと思い質問致しました。
素早いご返答ありがとうございました。
0540nobodyさん2010/01/29(金) 09:51:16ID:???
正規表現で、「キッチンの」にマッチさせたくて
「キッチンの方の」にマッチさせたくない場合は
どう書けば良いですか?
後ろに「方」が付くかどうかの違いです。
0541nobodyさん2010/01/29(金) 09:58:46ID:kJRAFybz
?
0542nobodyさん2010/01/29(金) 10:00:47ID:???
キッチンの(?!方の)
否定後読み
正規表現単体の質問ならプログラム板の正規表現スレでやれよ
05435402010/01/29(金) 10:09:27ID:???
分かりました、ありがとうございます!
0544nobodyさん2010/01/30(土) 00:13:34ID:???
それ否定の先読みっていうんじゃ・・・
0545nobodyさん2010/01/30(土) 00:28:03ID:+AHy4UTd
3,5 3,7 1,7 1,10

のような感じで、1行に1つの多角形の座標を記述したファイルがあるとして、

任意の XY 座標が、上記ファイルの各行に記述された多角形内に
収まってるかを検索する方法として、なにか検索の定石みたいのはありますか?


GPS 座標からどこに居るのかを地名付きで表示したいと思っています

自治体の面積データは国が配ってるデータを使用します
0546nobodyさん2010/01/30(土) 00:46:09ID:9jHLZuCt
地名から座標はゲオコードで出来るけど逆も出来るか調べてみたら?
0547nobodyさん2010/01/30(土) 00:51:18ID:9jHLZuCt
リバースジオコード
0548nobodyさん2010/01/30(土) 00:55:19ID:???
>>545
定石かどうかは知らないけど、CPANにこんなのがあった。
http://cpansearch.perl.org/src/MARKOV/Math-Polygon-1.01/lib/Math/Polygon/Calc.pm
polygon_contains_point

まぁ「GPS」とか「Geo」とかでモジュール探した方が良さそうではある。
http://search.cpan.org/
0549nobodyさん2010/01/30(土) 02:32:59ID:+AHy4UTd
教えてもらったキーワードと CPAN モジュールをヒントにやってみます!

ありがとうございます m(_ _)m
0550nobodyさん2010/01/30(土) 02:44:24ID:0KWCr7Sg
久しぶりにperlでcgiを書こうと思いましたが、俺には意味がわからないエラーが2つほど発生しました。
開発環境: winxp, anhttpd, もしくはBlackJumboDog, ActivePerl5.8.7
状況: ずーっと以前に中途半端に作ったプログラムファイルを見てみたら、いきなり意味がわからなかった。

--------------------------------------------
1: perl -c でコンパイルできない記述が、anhttpdからcgiとして起動させるとなぜか普通に動く。(BlackJumboDogからでも動く)
 コマンドから -wc で動かすと以下のメッセージを吐く。
 Can't find string terminator "]" anywhere before EOF at - line 211.
 (このエラーメッセージ通りの記述ミスはない)

 どうゆうケースが考えられますか?ちょっと検討がつきません。

---------------------------------------------
2: htmlだけを出力するcgiを試しに作ってみた。
  コマンドから -w で動かすと以下の出力をする。

Content-Type: text/html;charset=Shift_JIS
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><TITLE>test</TITLE></HEAD><BODY>
test出力できてます
</body></html>

  なぜかanhttpdから動かない。他のcgiはanhttpdで動く。
  BlackJumboDogからだと動く。
  どうゆうケースが考えられますか?

---------------------------------------------
正直、この手のエラーは頭痛がします。
純粋にperlの質問じゃなくてすみません。
05515502010/01/30(土) 04:52:59ID:???
2のほう解決しました。
よく考えるとヘッダのあとの改行は二つでした。
こんなことを3時間以上も考えるなんて恐ろしい。

1のほうはまだ未解決頭痛続行中です。お願いします。
0552nobodyさん2010/01/30(土) 05:04:21ID:???
>>551
> Can't find string terminator "]" anywhere before EOF at - line 211.
> (このエラーメッセージ通りの記述ミスはない) ←これが気のせい

line 211に何かがあるわけじゃなくてもっと手前で閉じるべきもんを閉じてないと
パーサさんが EOF まで探したところで挫折する。
05535502010/01/30(土) 05:13:12ID:???
えーと、一応記述は自作のプログラムを使って分解した段階までは問題ありませんでした。

そうではなくて今不思議なのは、なぜhttpdから記述を引き渡すとコンパイルされない物がコンパイルされ、
その上エラーメッセージすら吐かずに稼動するのか?と言う所にあります。
0554nobodyさん2010/01/30(土) 05:18:02ID:???
>>553
記述に間違いがないと言うのならコードを晒しなさい
こっちでもテストしてみるし
05555502010/01/30(土) 06:23:33ID:???
ほぼ原因わかりました。
秀丸から直接コマンド打ってたのですが、UTF8のファイルを開いててもsjisとして扱ってくれてるくさい?です。
秀丸で打ったコマンド → perl -wc <con >con 
  #↑今開いてる秀丸タブの内容を引数とし、出力結果を新規タブに出力しろと言うコマンド

UTF8として認識させた ー (伸ばす棒)を、
q[ー]; で、UTF8ファイルでもエラーになります。
もちろん 'ー' だとコンパイルされます。

ー はsjisで815b、 ] は5b なので、たぶん断定です。
ただの偶然で違うかもしれませんが、もうめんどいのでこれ以上調べません。
UTF8ファイルからまさかsjisの文字コード問題でハマるとはね。
秀丸死ね。
0556nobodyさん2010/01/30(土) 06:27:31ID:???
> 秀丸から直接コマンド打ってたのですが

んな後出しをするから「内部処理がCP932なんじゃね?」と書いてもらえない
0557nobodyさん2010/01/30(土) 07:11:34ID:???
>>555
秀丸じゃなくてお前がし(ry
0558nobodyさん2010/01/30(土) 09:25:08ID:???
>>545
ここのAPI使う
http://www.geocoding.jp/
0559nobodyさん2010/02/01(月) 13:06:09ID:???
俺もWindowsで(Samba経由で)Linux上のファイルを修正して散々500エラー食らいましたが、
何故WindowsからはNGなのでしょうか?
Winが触ったファイルを回復させる方法は、nkfしか知らないのですが・・・
0560nobodyさん2010/02/01(月) 13:23:02ID:???
そういう人は向いてないから今からでもIIS+VBかなんかに乗り換えた方が
いいんじゃないかなぁ
0561nobodyさん2010/02/01(月) 13:41:59ID:???
要するに「そういうモノだ」ということですかね。
よく考えたらレンタルサーバにFTPとかでUPする場合、
Win側のテキストエディタで文字コードと改行コード指定するしかないから、
サーバ側の設定の問題かと思ったのですが。

> IIS+VBかなんかに乗り換えた方が
Perl → PHPに乗り換える方が現実的なような。
まぁPerlが何となく好きなんで、もうちょいPuTTY+vimで頑張りますよ。。。
0562nobodyさん2010/02/01(月) 14:44:14ID:???
perlはFastCGIにしろmod_perlにしろ、実運用でめんどくさいんだよね<PHPに比べると。
0563nobodyさん2010/02/01(月) 19:10:33ID:???
nkf で復旧できるのに鯖側の設定を疑うのか。
0564nobodyさん2010/02/01(月) 23:00:00ID:???
Winのエディタで壊れてnfkで復旧 → Winのエディタってどーなってんの?
Winのエディタで作成してFTPでうp → Winのエディタで動くってサーバどーなってんの?

鯖のシステムの文字コードをcp932にしたらおk^^
って話ならお断りしますが。
0565nobodyさん2010/02/02(火) 10:41:56ID:???
>>564
LINUXの共有フォルダをドライブでLドラとかにマウントして
タスクスケジュール使って定期的にCドラからLドラにファイルをcpしたら?

あと、windowsにCygwinとかのVM使ってLINUXとして動かす方法もある。
0566nobodyさん2010/02/02(火) 10:46:28ID:???
>>565
あと、改行コードがwinだと<CR><LF>
Linuxだと<LF>つーのは当然知ってるよね?

改行コードが違っててLINUX側では壊れたように認識されるってのも
よくある話なので、WIN側で保存する際は間違っても「メモ帳」とか使わない
0567nobodyさん2010/02/03(水) 01:38:18ID:???
そもそもwinを(ry
0568nobodyさん2010/02/05(金) 23:38:04ID:???
とても初歩的なことですみません。
調べてもなかなかケースが見つからないので質問をさせていただきました。
ページA内のボタンを押すと、ページBに飛ぶようにしたいです。
その際、ページBを表示するサブルーチンに、ページAの引数の値を
渡すにはどのようにすればいいのでしょうか?
0569nobodyさん2010/02/05(金) 23:39:53ID:???
質問の意味が(ry
0570nobodyさん2010/02/06(土) 00:10:45ID:???
言ってる事は無視してやりたい事の概要だけつかむと、
フォーム+CGIの話だとは思うが・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
0571nobodyさん2010/02/06(土) 00:15:59ID:???
ページA内のボタンと同じフォームに一緒に渡したい内容を
hiddenで仕込んでおけば。
0572nobodyさん2010/02/06(土) 04:45:05ID:???
ページAのボタンを押すとページBが爆発するようにしたいのですが
twitterで叫んでも爆発しませんでした?
05735682010/02/06(土) 17:28:41ID:???
>>569 >>570
cgiのお話です。書き忘れてしまいました。
・・ごめんなさい。
>>571
教えていただいてありがとうございました。
つまり
<input type="hidden" name="***" value="ページBに渡したい引数">
を併記すればいいということですよね?
今試せないのですが、月曜日に学校に行ったらさっそく
試してみようと思います。
ありがとうございました。
0574nobodyさん2010/02/06(土) 22:25:09ID:???
パラメータ送るのはいいけど、ページBで受け取る方法は知ってるんだろうな・・・?
05755682010/02/07(日) 20:06:34ID:???
>>574
えっと・・・shiftでは駄目ですか?
0576nobodyさん2010/02/07(日) 21:02:36ID:???
> ページBを表示するサブルーチン

飛んで来たものが @_ に入ってる状態まで持って行かないと shift では取れないよ。
それよりページAもページBも同一スクリプトの出力だったりするのかな。
05775682010/02/07(日) 23:15:29ID:???
>>576
はい。ページはすべて同一スクリプトです。
各ページはそれぞれサブルーチンに記載しています。
Sub PageA内の<input type="submit" name="to_pageb" value="ページBへ">
でボタンを作り、別記のif($CGI->param("to_pageb")){PageB($CGI);}
というif文でSub PageBに移動させています。
で、Sub PageB内で、my $cgi=shift; $a=shift;で
$aに値をとりだす・・・と考えているのですが、間違ってますか?
全然自信がなくて恥ずかしいのですが
変なことをしてしまっているかもしれません・・・。
■ このスレッドは過去ログ倉庫に格納されています