Perlについての質問箱 50箱目at TECH
Perlについての質問箱 50箱目 - 暇つぶし2ch500:デフォルトの名無しさん
12/02/10 06:12:31.75
>>499
Sort::Key::Natural とか Sort::Naturally とかを使うのが簡単。

手で作っても大したことないけど。

なんか Python スレにも同じ質問があがってたね。


501:デフォルトの名無しさん
12/02/10 07:30:18.34
>>499
URLリンク(perldoc.jp)

502:デフォルトの名無しさん
12/02/10 07:39:01.77
>>500
両方使ってみましたが、思ったものと違うようです
数字の前の文字列が共通の要素同士ではちゃんと数字順に並んでいるのですが、
文字列部分での順序がランダムに見えます
ランダムという訳ではなくて何か規則はあるのだろうけど、多分賢すぎです
日本語を扱わせていることに原因があるのかもしれません

>>501
見るべき場所が判りません

503:デフォルトの名無しさん
12/02/10 08:47:25.63
例えば、natkeysortでは
え00 う01 い02 あ03 a03 b02 c01 d00
こんな感じの並びになります

504:デフォルトの名無しさん
12/02/10 09:29:16.03
>>503
日本語いれるなよ。しきいがたかくなるやん

505:デフォルトの名無しさん
12/02/10 09:29:43.29
use Encode;
とか…心細い

506:デフォルトの名無しさん
12/02/10 09:29:57.25
>>504
decodeすればまだなんとか

507:デフォルトの名無しさん
12/02/10 09:31:12.32
>>502

ああ、NaturalSort が内部で use locale しているので、
日本語がおかしなことになってるようですね。

数字部分がそれっぽく並ぶだけでいいのなら、
とりあえず、こんなのでいいのでは。

sub makekey($) {
    my $s = shift;
    $s =~ s/\d+/sprintf '%09d', $&/ge;
    lc $s;
}
sub naturalsort(@) {
    return map {$_->[0]} sort {$a->[1] cmp $b->[1]} map {[$_,makekey($_)]} @_;
}


508:デフォルトの名無しさん
12/02/10 10:11:20.37
>>502

ちょっと見てみたけど、内部で use locale しているのは
Sort::Naturally だけだった。

Sort::Key::Natural のほうは日本語でもそのまま動くみたい。

Sort::Naturally を use せずに Sort::Key::Natural だけで
試してみてはどうでしょうか。



509:デフォルトの名無しさん
12/02/10 10:18:24.74
use Sort::Key::Natural;
@a = ('a03', 'b02', 'c01', 'd00', 'あ03', 'い02', 'う01', 'え00');
@b = natsort @a;
print "@b";

の結果が>>503になるようです

510:デフォルトの名無しさん
12/02/10 10:21:56.27
use strict; # >>499 >>503
my @file_list = ('file1', 'file10', 'file2', 'e00', 'u01', 'i02', 'a03', 'b02', 'c01', 'd00');
my $i = 0;
my $longfilename_size = 255;
my @temporary_list = ();
my ($file_name, $k, $m, $used_as_number);
for $file_name (@file_list) {
  $m = $longfilename_size;
  $k = index($file_name, '0'); if($k >= 0) { if($k < $m) { $m = $k; } }
  $k = index($file_name, '1'); if($k >= 0) { if($k < $m) { $m = $k; } }
  $k = index($file_name, '2'); if($k >= 0) { if($k < $m) { $m = $k; } }
  $k = index($file_name, '3'); if($k >= 0) { if($k < $m) { $m = $k; } }
  $k = index($file_name, '4'); if($k >= 0) { if($k < $m) { $m = $k; } }
  $k = index($file_name, '5'); if($k >= 0) { if($k < $m) { $m = $k; } }
  $k = index($file_name, '6'); if($k >= 0) { if($k < $m) { $m = $k; } }
  $k = index($file_name, '7'); if($k >= 0) { if($k < $m) { $m = $k; } }
  $k = index($file_name, '8'); if($k >= 0) { if($k < $m) { $m = $k; } }
  $k = index($file_name, '9'); if($k >= 0) { if($k < $m) { $m = $k; } }
  if($m == $longfilename_size) { # no number
    $temporary_list[$i++] = join '', '<', $file_name;
  } else {
    $used_as_number = substr($file_name, $m);
    $temporary_list[$i++] = join '', substr($file_name, 0, $m), sprintf('%03d', $used_as_number), '<', $file_name;
  }
}

for $file_name (sort @temporary_list) {
  $k = index($file_name, '<');
  print substr($file_name, ++$k), "\n";
}

511:デフォルトの名無しさん
12/02/10 10:31:20.49
おおー
解読できてませんが、ちゃんと動いているようです

sort {$array[$a] cmp $array[$b]} (0 .. $#array)
みたいな使い方がしたいので、sortから呼び出す関数の形になってると有り難いです

512:デフォルトの名無しさん
12/02/10 10:40:49.93
>>509
ちゃんと use utf8 すれば動くよ。


513:デフォルトの名無しさん
12/02/10 11:32:07.44
そう思って、encode('utf-8', ) とかはやったんだけど、
その場合の結果は>>503と同じで
use utf8 とは挙動が異なるようです
use utf8はちょっと避けたい理由があるので、
なんとかuse Encodeの範囲内で解決できませんか

514:デフォルトの名無しさん
12/02/10 11:35:41.16
>>502
> 見るべき場所が判りません
「(なにか)」が今回はファイル名の数字部分で、そのまま解き方の解説なんだけど。

my @file_list = qw( い2 file1 い00 file10 あ10 file02 い02 あ5 い1 file2 5 007 1 a1b10 a1b01 a1b1 );
@file_list = (map("$_.b", @file_list), map("$_.a", @file_list));

print(
  map "$_->[0]\n",
  sort { $a->[1] cmp $b->[1] || $a->[2] <=> $b->[2] || $a->[3] cmp $b->[3] }
  map [ $_, /^(.*?)([0-9]+)(\..+)\z/ ],
  @file_list
);

515:デフォルトの名無しさん
12/02/10 14:21:17.78
>>494
# 単純にもう1行追加したい
while(defined (my $line = <>)){
...
if ($line =~ /xxx/){
# 単純に1行追加
my $new_line = <>;
...
}
}

# 追加行に通常処理も加えたいような場合
my $state = 'start';
while(defined(my $line = <>)){
if ($state eq 'xxx'){
# 1行追加処理(後で通常処理も加える)
...
$state = 'start';
# fall thru.
}
if ($state eq 'start'){
...
$state = 'xxx' if ($line =~ /xxx/);
next;
}
}

516:デフォルトの名無しさん
12/02/10 14:34:29.39
>>513

そもそも、もとの文字列が utf-8 じゃないのでは?
もし上の例で cp932 が生ではいっているのなら、

@tmp = map {decode('cp932',$_)} @a;
@b = map {encode('cp932',$_) } natsort @tmp;

でいけるはず。


517:デフォルトの名無しさん
12/02/10 18:07:17.86
use utf8して、スクリプト中に埋め込んだ文字列をソートするとうまくいくけど、
外部からsjisのファイルを読み込んでutf8に変換してソートしようとしても、
どうもうまくいきません

518:デフォルトの名無しさん
12/02/10 18:21:37.79
>>517
お前のコードがゴミなんだろ
ここで自分のコードはゴミですアピールして楽しい?
まじ池沼だな

519:デフォルトの名無しさん
12/02/10 18:33:30.61
>>517
ちゃんと、decode('shiftjis', $_) でインポートしてソートしてる?

>>518
更年期障害ですか、あんた

520:デフォルトの名無しさん
12/02/10 18:40:07.15
>>517
ここはPerlの質問スレであってお前の糞コードのどこが悪いかを質問スレじゃねぇんだよ

521:デフォルトの名無しさん
12/02/10 18:44:56.39
自前でエンコードするのは諦めて、
>>4のテンプレを全面採用すると、あっさり動きました

うーむ、従うしかないのか、、、
その方がソースも遥かに綺麗ではあるんだけど、、、

sub s2u {
my $str = shift;
return encode('utf-8', decode('cp932', $str));
}
↑こんなのを書いて渡しても、挙動がおかしい
これの逆パターンの関数を書いて、uff-8ソースに埋め込みの文字列を表示させようとしても
化けたり、Wide character云々とか言われる

これでうまく行くケースも結構あるんだけど、utf-8にもいろいろあるみたいで、
その違いが乗り越えられない

522:デフォルトの名無しさん
12/02/10 19:04:07.43
>>520
うるさいゴミ

523:デフォルトの名無しさん
12/02/10 19:11:36.80
自分でも叩けそうなレベルの話題になると急に元気になるのなw

524:デフォルトの名無しさん
12/02/10 19:21:08.17
>>521
open (my $FH, '<', "./test.sjis");
  my @test;
  while (<$FH>) {
    chomp;
    push @test, decode('shiftjis', $_);
  }
close $FH;

for my $v (@test) {
  print encode_utf8($v). "\n";
}

これで警告なくうまく出力されるけど?

525:デフォルトの名無しさん
12/02/10 19:21:33.05
>>511
sort {($a0 = $a) =~ s/(\d+)/1000 + $1/ge, ($b0 = $b) =~ s/(\d+)/1000 + $1/ge, $a0 cmp $b0} @file_list;

関数の形
sort renamed @file_list;
sub renamed {
    (my $a0 = $a) =~ s/(\d+)/1000 + $1/ge;
    (my $b0 = $b) =~ s/(\d+)/1000 + $1/ge;
    $a0 cmp $b0;
}

526:デフォルトの名無しさん
12/02/10 19:27:00.22
>>524
今こっちでも同じ答えを見つけたのにー

encodeしちゃいけなかったのね
decodeして中間コードみたいな状態で渡して、
受け取ったらdecodeせずにencodeだけすればいいのか
なんか気持ち悪いけど

>>525
おお、シンプル
試してみます

527:デフォルトの名無しさん
12/02/10 19:31:11.70
>>526
encodeとdecodeを根本で勘違いしてる。

decodeは、外部から文字列をPerlスクリプト内へインポートするための関数。
外部から取り入れた文字列はバイナリ認識だからPerlで文字列として扱えるようにする。

encodeは、Perlスクリプト内から外部へ文字列をエクスポートする関数
Perl内で文字列は特殊な方法で管理されてるから、その管理を外して外部でも使えるようにする。

インポートして、処理して、エクスポートする。

528:デフォルトの名無しさん
12/02/10 19:56:00.26
まあ、そうなんだけどね
何で今まで困らなかったんだろう

そもそも、'utf8'という指定がencodeやdecodeで使えるのはどういうことなんだ

529:デフォルトの名無しさん
12/02/10 21:08:52.36
>>528
decode,encodeは「他のコード⇔UTF-8」じゃなくて「他のコード⇔Perl内部コード」だよ
「utf8フラグ」ってのはいい加減誤解の元だよね

530:デフォルトの名無しさん
12/02/10 21:42:14.63
見事に馬鹿しかいない

531:デフォルトの名無しさん
12/02/10 21:57:24.00
>>530
学校でろくな先生に出会わなかったんだろうな…

532:デフォルトの名無しさん
12/02/10 21:58:28.66
だからUTF8フラグが混乱の元。
Perl文字列フラグだったらよかった。

533:デフォルトの名無しさん
12/02/10 23:58:48.17
名前変えても挙動は一緒だろ、何が問題なのか全然分かってないなw

534:デフォルトの名無しさん
12/02/11 00:10:03.08
danが問題なんじゃなかったのか?違ったか?失礼。

535:デフォルトの名無しさん
12/02/11 00:26:15.06
大規模な文字集合になると、文字なのか文字でないのかの境界が
単純に0/1で分けられないからなぁ
そういうのは今のところUTF8フラグでは扱えない
それに文字か文字でないのかは多分に気分的なものがあるので、
そうなると本質的に機械では扱えない

536:デフォルトの名無しさん
12/02/11 00:46:48.41
>>535
お前馬鹿だろ?
頓珍漢なこと言ってるぞ。

537:デフォルトの名無しさん
12/02/11 08:36:37.59
      , -‐‐‐‐‐- 、
     /r。-、r。-、ヽ
    _.j .l_,...、_l l_,...、_l r‐、
   l l‐r‐‐r―r―(,)‐ァ_.ノ
   、ゝ  ̄    ̄  ノ. ノ <いきなり尻見せ
   ゝ、`‐―‐‐_',イ ヽ
      ( ̄て""´  ヽ \
      \   .)    、 ~ヽ
        ヽ_人      l ,l
         /    __/_ノ
         l   -‐ ̄ ヽ
         \   ヽ

538:デフォルトの名無しさん
12/02/11 11:25:25.34
内部コードを隠してしまいたいのか、
世界全部が内部コードと同じになって欲しいのか、
方向がはっきりしない

539:デフォルトの名無しさん
12/02/11 12:34:05.24
世界全部が内部コードと同じになることはありえない。

答えは出てる。

540:デフォルトの名無しさん
12/02/11 12:41:38.24
今でも普通にsjisのデータが増え続けてるし、過去のデータはきっと永久にsjisだし

541:デフォルトの名無しさん
12/02/11 13:18:58.45
だけど、いちいちプログラマがこのファイルの文字コードは何だろう?と
考え続けていたら、大変なことになる。

だからせめてプログラム言語の中では統一しよう。
そうやってできたのがPerl標準のEncodeモジュール。

542:デフォルトの名無しさん
12/02/11 14:30:53.29
漢字に代表される大規模な文字集合の場合、一文字一文字が
英語でいうところの単語の性質を帯びてくる。

ここで、任意の英字の並びに対して、単語であれば1、単語
でなければ0、という「単語フラグ」というものを導入する
ことを考えてみる。

Perlで単語を処理する場合は必ず単語フラグを1にしなければ
ならない。

その試みは果たして成功するだろうか?



543:デフォルトの名無しさん
12/02/11 16:45:06.22
単語か単語ではないかを考えるのは無価値なので、考えない
ことにして、英字の並びをそのまま扱うようにするのがいい。

(ここまでの答えを自分で出せたひとだけ次に進みます。)

544:デフォルトの名無しさん
12/02/11 18:02:26.05
結論

単語フラグは意味が無いのだから
世の中のフラグはすべて意味が無いものなのです。

545:デフォルトの名無しさん
12/02/11 18:02:49.38
>>544
それは詭弁だ。

546:デフォルトの名無しさん
12/02/11 19:14:26.21
>>544
お前変な新興宗教入ってるだろ

547:デフォルトの名無しさん
12/02/11 19:44:45.99
少数の人だけしか理解できない呪文の不可解な連なりであり、
ヤギの血を含み、あなたの魂を永遠に堕落させる。
上司があなたに金曜夜21時に緊急の仕事を命ずるときにしばしば使われる。

548:デフォルトの名無しさん
12/02/11 20:02:03.11
時間を分単位とかで切り上げしたいのですが
どうやったらいいのでしょうか


549:デフォルトの名無しさん
12/02/11 20:03:35.82
小学生のさんすうレヴェルだろ
プログラミング以前の問題だ

550:デフォルトの名無しさん
12/02/11 20:12:32.51
20:11:15 を 20:12:00 に切り上げたいのか?
まさか、お前。。。釣りじゃないよな?

551:デフォルトの名無しさん
12/02/11 20:15:23.95
>>544
君は、utf8フラグまで戻って出直してください。

552:デフォルトの名無しさん
12/02/11 21:24:59.13
>>548
失せろゴミ
ここはPerlの質問スレであって
幼稚園児並の知能しかない低能に手取り足取り教える場所じゃねぇんだよ

553:デフォルトの名無しさん
12/02/11 21:31:39.83


554:デフォルトの名無しさん
12/02/11 21:37:48.24
>分単位とか
「とか」って言ってる辺りで察してやれよ、頭が遅れてるんだろ。

555:デフォルトの名無しさん
12/02/11 21:40:18.52
>>548
my $time = time;
$time = $time - ($time % 60) + 60;

お前ら、更年期障害ですか。

556:デフォルトの名無しさん
12/02/11 21:43:40.50
>>548=ゴミクズ

557:デフォルトの名無しさん
12/02/11 21:44:48.79
>>555
更年期障害はオマエだよ
その時間とやらの書式なにも考えてねーだrks

558:デフォルトの名無しさん
12/02/11 21:47:50.11
>>557
秒数から加工する知恵がでないお前が頭悪いだろ。

559:デフォルトの名無しさん
12/02/11 21:53:48.33
>>558
どこにも秒数なんて書いてねーだろ
お前には別世界でも見えてんのかアホ


560:デフォルトの名無しさん
12/02/11 21:55:28.93
>>559
お前プログラムした事あるの?
あそこから希望の書式に加工できないの?
答えれないのなら質問以外でレスするなクズ

561:デフォルトの名無しさん
12/02/11 21:56:54.21
>>555
元々00秒の値でやってみなw

562:デフォルトの名無しさん
12/02/11 21:58:35.86
>>560
だからお前はどこの異次元のぞいてんだ
希望の書式 とか何かカッコイイ単語並べて悦にドハマりしてんじゃーよwww
そのクソ書式がどこにあんだよ


563:デフォルトの名無しさん
12/02/11 22:01:02.38
>>561
my $s = (time % 60);
my $time = time - $s + (($s > 0) ? 60 : 0);

これでよろしいか?
例出して答えろよ。

>>562
お前は黙ってろ

564:デフォルトの名無しさん
12/02/11 22:04:19.02
>>563
> 例出して答えろよ。
恥かいたからって八つ当たりかえ?

565:デフォルトの名無しさん
12/02/11 22:08:06.12
>>564
何言ってんだ?

「こうだろうがハゲ」とでもいいながら
正しい式書けって言ってんだ。
質問スレで質問でも回答でもない糞レスを増やすな

566:デフォルトの名無しさん
12/02/11 22:10:50.26
>>565
分からない時には逆ギレするように小学校で習ったのか、坊主?

567:デフォルトの名無しさん
12/02/11 22:11:36.37
>>563
> my $s = (time % 60);

また恥を増やすつもりか
それともオレのおなかをよじれさせるつもりかよwwwww
はたまた引っ掛けとか釣りかよwwww
$$$$$$$$$$$$


568:デフォルトの名無しさん
12/02/11 22:12:57.50
>>566
う~ん?
ちょっと言ってる意味が分からない

>>567
さっぱり、お前の言ってる意味がわからん。
大丈夫か?

569:デフォルトの名無しさん
12/02/11 22:18:56.85
time + 60 で秒を使わずに 00 にして十分かと

my($year,$month,$day,$hour,$min) = (localtime(time + 60))[5,4,3,2,1];
my $tatoeba = sprintf('%04d-%02d-%02d %02d:%02d:00', 1900+$year,$month+1,$hour,$min);

こんな感じ。釣りなのは分かってるけどね。

570:デフォルトの名無しさん
12/02/11 22:20:32.13
$day が抜けてたwごめんね

571:デフォルトの名無しさん
12/02/11 22:21:02.74
バグ入りコードを晒した>>555が必死で火消し中w
だがもう涙で画面が見えないw

572:デフォルトの名無しさん
12/02/11 22:23:49.16
原因は>>548
この程度も分からない池沼ってコピペでしかプログラム組めなくね?
何でこの板にいんの?

573:デフォルトの名無しさん
12/02/11 22:24:52.04
でもこんなことも他人に聞く時代になったんだね。
未来にはどんな質問がされることやら。

574:デフォルトの名無しさん
12/02/11 22:27:25.11
>>569
それだと00秒の時にも繰り上げてしまうのがよくないって、さっき突っ込まれたけど。

それと、標準のlocaltimeは、Time::Pieceが無いのならしょうがないけど、
使えるならTime::Piece使う方が綺麗で簡単だしモダンなんだそうだ。

my $tp = Time::Piece::localtime($time);
print $tp->hms


>>571
どうした?
どこが間違ってるんだ、カッコ付いてるのが気に入らなかったか?

575:デフォルトの名無しさん
12/02/11 22:32:14.47
> カッコ付いてるのが気に入らなかったか?
こりゃ思った以上に低レベルだわ
頓珍漢にも程がある

576:デフォルトの名無しさん
12/02/11 22:33:49.32
>>574
>それだと00秒の時にも繰り上げてしまうのがよくないって、さっき突っ込まれたけど。
そんなこと気にしない。
なぜなら 00 秒のときに実時間的には小数点以下の値があるから。
548に聞いてみ。問題ないっていうに決まってるぞ。

577:デフォルトの名無しさん
12/02/11 22:35:27.72
だいたい、そんなこといってる間に1秒たつだろw

578:デフォルトの名無しさん
12/02/11 22:37:11.91
>>575
はいはい、低レベル低レベル。

>>576
俺もそう思うけどw
でも指摘されたから修正したけど。

まぁ>>548の質問の内容には十分満たしてるだろ。

579:デフォルトの名無しさん
12/02/11 22:44:15.09
time + 60 # 分で切り上げ
time + 60*60 # 時間で切り上げ
time + 60*60*24 # 日で切り上げ

my($year,$month,$day,$hour,$min) = (localtime(...))[5,4,3,2,1] # 分単位で取得
my($year,$month,$day,$hour) = (localtime(...))[5,4,3,2] # 時間単位で取得
my($year,$month,$day) = (localtime(...))[5,4,3] # 日単位で取得

こういうの、モダンのやり方だと解法が見えてこないよね。


580:デフォルトの名無しさん
12/02/11 22:45:41.47
440 : 名無しさん@お腹いっぱい。 : 2011/07/04(月) 00:00:00.00 ID:lVHU+IzZ0

誰だよ実質的に小数点以下の値がある とか穂剤てるアフォは
そういうバグ野郎はさっさと寝ろよ


581:デフォルトの名無しさん
12/02/11 22:47:03.44
>>579
うん?

>>563>>574 の方法でできる

582:デフォルトの名無しさん
12/02/11 22:47:22.68
ここは、自分の都合に合わせて問題を勝手に変えてしまう
ゆとりPGが楽しく集う場所みたいだなw

583:デフォルトの名無しさん
12/02/11 22:48:05.37
覚えたてで使ってみたくてしょうがないんだろな、オブジェクト指向。
気持は分かる。

584:デフォルトの名無しさん
12/02/11 22:50:50.26
>>582-583
一人事じゃなくちゃんとアンカーつけようねー

585:デフォルトの名無しさん
12/02/11 22:51:55.43
学校のパールはPerl4かもしれないしね

586:デフォルトの名無しさん
12/02/11 22:54:52.28
>時間を分単位とかで切り上げしたいのですが
>『どうやったら』いいのでしょうか
プロセスを質問しているようなので、回答もプロセスがよろしいかと。

587:デフォルトの名無しさん
12/02/11 22:55:09.67
>>585
そんなバカなw
そんな学校辞めてOKだろw

万が一そうだったり、Perl4で強いたげられているんだ!だったら、
まぁその環境にあった良い感じでw

588:デフォルトの名無しさん
12/02/11 22:57:00.34
そこは 強いられているんだ!!! だろ

589:デフォルトの名無しさん
12/02/11 22:59:43.60
>>588

J( 'ー`)し ごめんね。おかあさんはじめて「強いられているんだ」使ったから、ごめんね。

590:デフォルトの名無しさん
12/02/11 23:00:01.84
しいたけたいらげている?

591:デフォルトの名無しさん
12/02/11 23:01:39.30
そもそも元の質問がPerl特有のものじゃなかったしな

592:デフォルトの名無しさん
12/02/11 23:01:52.39
おれなら秒単位で出力して、読むときに分単位で切り上げるけどな、キリッ

593:デフォルトの名無しさん
12/02/11 23:04:04.92
バカガキ>>548に踊らされるアホ住人

594:デフォルトの名無しさん
12/02/11 23:04:45.12
小学生の頃だったら、迷わずrootで1分進めとくオレだけどなw

595:デフォルトの名無しさん
12/02/11 23:04:46.67
バッカでぇーーッす!!!

596:デフォルトの名無しさん
12/02/11 23:52:09.04
>>585>>587
ねーよww
そんな環境あったら抗議多発するし
今時4のみ対応のテキストなんてどうやって用意すんだよwww

597:デフォルトの名無しさん
12/02/12 00:34:36.40
($year,$month,$day,$hour,$min) = (localtime(time + 59))[5,4,3,2,1];
$time = sprintf("%04d-%02d-%02d %02d:%02d:00",1900+$year,%month+1,$day,$hour,$min);
でいけそうです。ありがとうございました。

598:デフォルトの名無しさん
12/02/12 01:16:03.00
義務教育で全生徒が対象なので情報処理の基礎を教えるのが目的です。高度な機能は必要ありません。例えば分の切り上げのようなもので十分です。テキストは教師がプリントを作っています。Perl4を使うことに対して抗議されるほどそもそも授業数がありません。

599:デフォルトの名無しさん
12/02/12 01:22:04.97
中間の変数を使わない方法は

600:デフォルトの名無しさん
12/02/12 01:25:43.38
義務教育だから「こそ」せめてPerlなら5以上にしとけと思う俺は異端なのか?

601:デフォルトの名無しさん
12/02/12 01:25:47.49
>>598
だったらPerlじゃなくてBASICでもLOGOでも使ってれば?

602:デフォルトの名無しさん
12/02/12 02:01:11.84
それではjcode.plなどの
実践技術を学べないだろう

603:デフォルトの名無しさん
12/02/12 02:42:57.16
今でもjcode.pl使ってるヤツは、おばか以外の何者でもない。

604:デフォルトの名無しさん
12/02/12 02:51:07.37
お前KENTさんを侮辱するのか?

605:デフォルトの名無しさん
12/02/12 02:58:12.61
>>604
正直あの人のスクリプトは、もう古い。
有名だからって、あれを見習っちゃいけない。

606:デフォルトの名無しさん
12/02/12 03:03:20.23
このスレに質問してくる人の9割がKENT本読んでんじゃね?て感じのコードだしなぁ…

607:デフォルトの名無しさん
12/02/12 06:15:03.40
>>597
$time = int(($time + 59) / 60) * 60;

608:デフォルトの名無しさん
12/02/12 12:48:02.97
KENTのPerlスクリプトが
通用したのは2000年ぐらいまでだろうね。

今では、高校生がPerlでこんなのを作ってみましたって
感じにしか見えない。

609:デフォルトの名無しさん
12/02/12 13:06:30.46
プログラムなんか簡単そうに見えた方がいいだろ
難解なものを有り難がっているうちはビギナー

610:デフォルトの名無しさん
12/02/12 13:13:01.61
と言う奴が便利なモジュールを使うべきところで全部自分で一から書こうとする


そしてそのスタイルを回りに強要する

611:デフォルトの名無しさん
12/02/12 14:01:33.05
KENTのコードは、今となっては
モジュールでやればいいものを
自分で実装してるからな。
使えない。

612:デフォルトの名無しさん
12/02/12 14:15:42.36
俺の頭の中のPerlも2000年頃で止まってるわ

最近の日本語の文字コード変換のトレンドって何?
俺未だにjcode.pm使ってる

DB使うには今でもDBIやDBDモジュール?

use CGI;とか今でも使う?

613:デフォルトの名無しさん
12/02/12 14:26:33.39
>>612
>最近の日本語の文字コード変換のトレンドって何?
Encode

>DB使うには今でもDBIやDBDモジュール?
基本はそれ、あとはDBIx::*とか、らしい

>use CGI;とか今でも使う?
まあスタンダードだからね
あとはFastCGIとPlackお勧め

614:デフォルトの名無しさん
12/02/12 14:27:47.26
自分でやれる程度のものなら別にいいだろ
モジュールを使うのは、自分でやってたら何日かかるか判らないような規模のものだ
好奇心で作ってみるには時間が無駄過ぎる

615:デフォルトの名無しさん
12/02/12 14:34:27.06
モジュールなら、ただ「使い方を覚える」だけでいい。
だが、それに頼り切って頭が腐った奴には
授業で習うレベルの古典的な>>607すら理解できない。

616:デフォルトの名無しさん
12/02/12 15:05:39.00
>>614
まだ目先のことしか見れてないね。
基本的にこんな感じで選ぶよ。

・標準モジュールは使う
・よく使われてるモジュールは使う
・コードがシンプルになるなら使う

簡単に作れるような内容でもテストまで含めたりすると、
殆どの場合モジュールを使ったほうが速いしね。

逆にモジュールを使わないと判断するのは、そのモジュールがもうメンテされてない。
バグが多い。世の中で誰も使ってない。オーバースペック。こんな所かな。

617:デフォルトの名無しさん
12/02/12 15:12:39.05
> 世の中で誰も使ってない。オーバースペック。

ようするに「わたしにはそのコード理解でkましぇーーーん!!」
だろ 
先例主義のアフォかよw


618:デフォルトの名無しさん
12/02/12 15:26:25.77
>>617
なんでそう思ったの?

619:デフォルトの名無しさん
12/02/12 15:42:41.39
他人のモジュールを使ってバグで悩むのは、作者の想定外のことをするからだ
想定しない作者が悪いというよりも、道具の使い道を把握できない利用者の責任

一度フリーソフトとか作って公開してみるといいよ
何でそんなことに使おうと思ったんだ、みたいな苦情が来るから

620:デフォルトの名無しさん
12/02/12 15:46:39.08
>>619
抽象すぎて説得力がない。

621:デフォルトの名無しさん
12/02/12 15:57:58.27
>>613
サンクス!

622:デフォルトの名無しさん
12/02/12 17:43:13.51
>>619
いや、それは作者のデバッグ力なさすぎな作者の責任だろ。普通に考えて。
想定外の使い方されないようエラーチェックするんだろ?

半角数字入力を期待する処理をする時、
半角数字以外の文字が入力されたらエラーと処理せず、
そのまま放置し不具合出たまま期待と違う処理を続行するような状態を、
「半角数字って書いてんのに、それ以外入力するお前が悪いから知らね」とでも言うのか?

例え日曜プログラマーだったとしても、プログラム作る人間の風上にも置けんな。

623:デフォルトの名無しさん
12/02/12 18:11:39.10
sub funk1 {
print "argv: @_\n";
}

$funk2 = &funk1;
print $funk2("foo bar");

これを実行すると
argv:
とだけ出力されて何故引数が表示されないのか考えました。
何故print $funk2("foo bar");でコンパイルエラーが出ないのでしょうか? (use strictすると出ますが)
$変数名に()をつけて呼び出す記法は無いと思うのですが。

624:デフォルトの名無しさん
12/02/12 18:34:31.22
Bareword

625:デフォルトの名無しさん
12/02/12 18:40:59.78
>>623
なぜ変数名に()を付けてエラーとならないかってのは答えれないけど、
argv: とだけ表示されて、なぜ引数が出力されないかって所は、かなり酷い状態だ・・・・

ちなみに、
sub funk1 {
print "argv: @_\n";
}

$funk2 = \&funk1;
$funk2->("foo bar");

こうすればいいんだけど、もっと基礎をちゃんと勉強しろ

626:デフォルトの名無しさん
12/02/12 18:43:59.84
リファレンスも知らないバカ

627:デフォルトの名無しさん
12/02/12 18:45:30.99
またスパルタ教師ぶりたい連中が湧いてきたな
>>625なんか最後の一言で台無し

628:デフォルトの名無しさん
12/02/12 18:46:34.88
モダンPerlってうっかり車輪の再発明になってしまったモジュールのステマだろ?

629:デフォルトの名無しさん
12/02/12 18:48:45.01
>>627
普通にそういう状態だから。
答えを示さず煽るだけは嫌いだけど、
この質問はなかなか酷い。
2chで質問してイヤな思いするなら別で質問するんだな。

630:623
12/02/12 18:53:17.29
すみません。純粋に疑問点だけを載せればよかったですね。
何故argvしか表示されないのかの理由はわかっています。


631:デフォルトの名無しさん
12/02/12 18:55:25.58
use strict知ってるのにリファレンス知らない奴なんてそうそういねーだろ

632:デフォルトの名無しさん
12/02/12 18:56:17.49
現に居てるじゃねーか

633:デフォルトの名無しさん
12/02/12 18:58:25.45
>>623
        ↓出力する内容
print $funk2("foo bar");
    ↑ファイルハンドル

print $funk2 'foo bar';と等価。

634:デフォルトの名無しさん
12/02/12 18:58:33.88
>>632>>623を「リファレンスも知らない初心者」と決め付けたかったわけだな
残念、本当の初心者ならuse strictすら使えんよ

635:デフォルトの名無しさん
12/02/12 19:03:16.88
>>634
知らなかった事、間違ってた事を全力でフォローするな。
知らない事、間違った事を認めれないガキか。
「間違ってましたー、勉強してきまー」くらいで終わらんのか・・最近のガキは・・・

636:デフォルトの名無しさん
12/02/12 19:04:52.68
>>630 ← で、何でこのゴミは何なの?

637:デフォルトの名無しさん
12/02/12 19:06:00.24
>>635
>「間違ってましたー、勉強してきまー」くらいで終わらんのか・・最近のガキは・・・
本当にそう言ったとしてもお前らがネチネチと終わらせないわけだが

638:デフォルトの名無しさん
12/02/12 19:06:14.98
623って頭悪そうPerl関連の本とか5冊も持ってないんじゃね。

639:デフォルトの名無しさん
12/02/12 19:08:02.35
>>637
それで終わってあとは二度とスレ見なければいい話だろ
>>623みたいなマジキチは2chを便利なオンライン講座と勘違いしてるわけだし

640:デフォルトの名無しさん
12/02/12 19:08:45.12
>>637
誰かが言ってたけど、2chなんて便所の落書きと同じだ。
その中に有益な情報が紛れてるのを見付け出して利用する。
後はポイだ、ポイ。

641:デフォルトの名無しさん
12/02/12 19:08:47.46
>>634
perl -e 'my $a="STDERR";print $a("aaaaa");' >/dev/null
aaaaa

おお、ほんとだ。納得しました。

642:デフォルトの名無しさん
12/02/12 19:09:46.47
間違えた、>>641>>633宛。

643:デフォルトの名無しさん
12/02/12 19:10:34.50
まともな精神構造してたら他人に質問するのにこんな態度はとらんよ。

親がキチガイなんだろう。
まともにガキ1匹教育できないクズが性欲にまかせてガキ作ったのがこの結果。

>>623の親は社会のお荷物。

644:デフォルトの名無しさん
12/02/12 19:10:44.26
>>638>>639
なに必死になってんの…

645:デフォルトの名無しさん
12/02/12 19:12:09.43
>>643
まともな精神構造なら、もし真摯に質問してきても偉そうな態度で答えたりしない

646:デフォルトの名無しさん
12/02/12 19:13:51.93
>>641
出力先がSTDERRだから表示されるけど、
なぜ一々標準出力を /dev/null へ捨ててるのかが意味不明。

笑えるほど何か、いちいちツッコミ所があるな

647:623
12/02/12 19:14:04.54
何か勘違いされていそうですが、僕の書き込みは>>623>>630だけです。
荒れるような質問をしてすみません。>スレ住人

>>633
あー、なるほどそう解釈されたわけですか。
use strict;
sub funk1 {
print "argv: @_\n";
}
open(my $fh, ">test.txt");
print $fh("foo", "bar");

で上手く動きました。ファイルハンドルとして捉えられていたのですね。
$fh("foo", "bar")は関数呼び出しに見えますが、その辺をうまく解釈してくれようとしていたのですね。
ありがとうございました。

648:デフォルトの名無しさん
12/02/12 19:15:29.32
>>646
STDOUTへの出力じゃないことを強調したかったんで…

649:デフォルトの名無しさん
12/02/12 19:17:39.91
>>647
こちらこそ申し訳ないです
老婆心ながら、コードの可読性的に$fhと()の間は空けた方が良いですね

650:デフォルトの名無しさん
12/02/12 19:19:22.51
>>647
無事に動いてよかったよかった^^
謝らなくてもいいよ、ゴミの下げる頭には何の価値もないから^^
解決したならこれでもう二度と来なくていいね^^
荒らしたかったらまたいつでもおいで^^

651:デフォルトの名無しさん
12/02/12 19:20:55.90
>>647
この場合はB::Deparseを使うと分かる。
文法に悩んだら一度試してみると吉。

URLリンク(perl-users.jp)

652:デフォルトの名無しさん
12/02/12 19:22:07.34
>>650 eq >>637か?
非実在下種野郎を自分で演じるとは…

653:デフォルトの名無しさん
12/02/12 19:22:43.94
>>647
自分の書き込みのせいで荒れてるって自覚あるのにまだ書き込んでるのかこの基地害

654:デフォルトの名無しさん
12/02/12 19:24:36.65
>>649
荒らし目的で釣り質問してるのに
可読性のいいコード出すわけねえだろバーカ

655:デフォルトの名無しさん
12/02/12 19:26:01.16
誰か>>648に対するまともな揚げ足取りが思いつかないんでお願いします

656:デフォルトの名無しさん
12/02/12 19:28:44.16
>>655
その説明でやりたい事の意味がわかったから、
いちいち間違いがないか確認しなくていいw

657:デフォルトの名無しさん
12/02/12 19:32:05.90
>>623はパソコンの前で腹抱えて笑ってるんだろうな、
ほんと糞だわ

658:デフォルトの名無しさん
12/02/12 19:35:31.80
釣りでェーーーーっす!!!
バカが大量で今日も飯がウマいでーーーす!!!
プププププ!!!

659:デフォルトの名無しさん
12/02/12 19:38:34.65
>>597
面白い発想。Time::Pieceでまとめるとこんな感じか。
use Time::Piece;
my $time = localtime(time + 59)->strftime("%Y-%m-%d %H:%M:00");

自分で考えるとこれか、>>607と同じだな。
use POSIX qw(ceil);
my $time = ceil(time / 60) * 60;

660:デフォルトの名無しさん
12/02/12 20:53:15.49
>>659
素晴らしい
こういうモダン風への書き換えは参考になります

661:デフォルトの名無しさん
12/02/12 21:04:04.60
やっぱりモダンのほうが見やすいね。

662:デフォルトの名無しさん
12/02/12 21:17:40.76
printでデバッグログを大量に出してるのですが、オンオフしやすいようにdbgPrint(名前は適当)にそのまま置換して、
sub dbgPrint() {print @_ if ($debug);}
とか書こうとしたのですが、上手くいきません。すごく基本的なことだと思うのですが、
こういうことをしたいときはどうすればいいでしょうか。よろしくお願いします。


663:デフォルトの名無しさん
12/02/12 21:21:55.63
sub dbgPrint {print @_ if ($debug);}

664:デフォルトの名無しさん
12/02/12 21:29:47.35
>>662
Sys::Syslog、Log4Perlあたりを使えば、
簡単にデバッグログのON/OFFや
出力先の切り替えができる。

665:デフォルトの名無しさん
12/02/12 21:32:10.50
@t = localtime( time );
if ( $t[0] != 0 ){
   $t[0] = 0;
   $t[1]++;
   if ( $t[1] >= 60 ){
      $t[1] = 0;
      $t[2]++;
      if ( $t[2] >= 24 ){
         $t[2] = 0;
         $t[3]++;
         if ( $t[4] == 2 ){
            $maxday = 28;
         }elsif ( ( $t[4] == 4 )||( $t[4] == 6 )||( $t[4] == 9 )||( $t[4] == 11 ) ){
            $maxday = 30;
         }else{
            $maxday = 31
         }
         if ( $t[3] > $maxday ){
            $t[3] = 1;
            $t[4]++;
            if ( $t[4] >= 13 ){
               $t[4] = 1;
               $t[5]++;
            }
         }
      }
   }
}

666:デフォルトの名無しさん
12/02/12 21:33:54.29
>>662
>うまくいきません

↑どううまく行かないのか分かるわけないだろクズ
お前の見た画面が分かるわけないだろキチガイ
レスいらないからとっとと失せろ

667:デフォルトの名無しさん
12/02/12 21:35:52.29
>>662=ゴキブリ並の知能。

668:デフォルトの名無しさん
12/02/12 21:37:54.22
>>665
ゴミ?

669:デフォルトの名無しさん
12/02/12 21:41:08.31
>ゴキブリ
これ最近流行ってんの?
>>662の頭がそのレベルってのは同意だけど

670:デフォルトの名無しさん
12/02/12 21:44:45.48
>こういうことをしたいときはどうすればいいでしょうか。
本10冊くらい買ってきて読めば?

671:662
12/02/12 21:48:59.07
ソース
my $debug = 1;
sub dbgPrint() {print @_ if ($debug);}
&dbgPrint "test\n";

実行結果
String found where operator expected at test.pl line 3, near "&dbgPrint "test\n""
(Missing operator before "test\n"?)
syntax error at test.pl line 3, near "&dbgPrint "test\n""
Execution of test.pl aborted due to compilation errors.

dbgPrintの呼び出しで括弧を付ければ動きました。
&dbgPrint("test\n");


672:デフォルトの名無しさん
12/02/12 21:54:15.92
>>671
sub宣言時の括弧はいらない >>663

673:デフォルトの名無しさん
12/02/12 21:55:35.54
>>671
もうおまえ来なくていいから
独り言ならブログに書いてろゴミ

674:デフォルトの名無しさん
12/02/12 21:56:55.16
もうちと詳しく言うとsub文での()は「引数とらない」て意味
むしろ定数宣言で使われることが多い

675:デフォルトの名無しさん
12/02/12 21:58:21.17
>>662
なんでロクに質問の仕方も分からないヴァカがここにいるの?

676:662
12/02/12 21:59:37.59
括弧を付けてないprint呼び出しがほとんどなので、いちいち括弧をつけるのは大変です。
なにか良いやり方はないでしょうか?
sub宣言時の括弧はこれからやめます。ありがとうございます。Log4PerやSyslogも見ましたが
自分の目的にはちょっと大げさすぎるようで。でもありがとうございます。


677:662
12/02/12 21:59:47.59
サブルーチンの呼び出しには()


678:デフォルトの名無しさん
12/02/12 22:01:09.77
>>676
情報後出ししてよく平然と質問できるな

679:デフォルトの名無しさん
12/02/12 22:01:52.99
>>662は荒らしだろ。
スルーしろ。

680:デフォルトの名無しさん
12/02/12 22:12:37.45
>>676
use CMDMessage;
$dbg = new CMDMessage;
$dbg->output('on');
$dbg->message('デバッグメッセージ');

とか使えば?

681:デフォルトの名無しさん
12/02/12 22:20:13.06
低レベルな問題を解決できず、
解決方法が分かったし、とりあえず釣りにして行こう的な流れ。

682:デフォルトの名無しさん
12/02/12 22:22:01.29
何この頭の悪すぎる>>662
必要な情報出さずに質問したうえに、レスがついてから情報出してくるとか
回答者のこととか全く考えてないな。
人格障害じゃね?

683:デフォルトの名無しさん
12/02/12 22:24:30.60
このスレは質問がなければ存在価値がないんだよ
わざわざ質問してやってるこっ人に感謝しろ糞共が

684:デフォルトの名無しさん
12/02/12 22:31:15.46
>>683
一番存在価値がねーーーのはオメーだよオメー
さっさと消えろ人糞

685:デフォルトの名無しさん
12/02/12 22:31:39.70
Perl(笑)

686:デフォルトの名無しさん
12/02/12 22:32:39.76
>>665
うるう年を考慮してないね

687:デフォルトの名無しさん
12/02/12 22:55:11.34
@t = localtime( time );
$t[4] += 1; $t[5] += 1900;
if ( $t[0] != 0 ){
   $t[0] = 0;
   $t[1]++;
   if ( $t[1] >= 60 ){
      $t[1] = 0;
      $t[2]++;
      if ( $t[2] >= 24 ){
         $t[2] = 0;
         $t[3]++;
         if ( $t[4] == 2 ){
            if ( ($t[5] % 400) == 0 ){ $maxday = 29; }elsif ( ($t[5] % 100) == 0 ){ $maxday = 28; }
            elsif ( ($t[5] % 4) == 0 ){ $maxday = 29; }else { $maxday = 28; }
         }elsif ( ( $t[4] == 4 )||( $t[4] == 6 )||( $t[4] == 9 )||( $t[4] == 11 ) ){
            $maxday = 30;
         }else{
            $maxday = 31
         }
         if ( $t[3] > $maxday ){
            $t[3] = 1;
            $t[4]++;
            if ( $t[4] >= 13 ){
               $t[4] = 1;
               $t[5]++;
            }
         }
      }
   }
}

688:662
12/02/12 22:55:33.91
やっぱりPerlでprintを使うときは括弧を付けたほうが後々いいということですかね。


689:デフォルトの名無しさん
12/02/12 23:06:50.86
Smart::Commentsが超便利
URLリンク(d.hatena.ne.jp)

690:デフォルトの名無しさん
12/02/12 23:11:21.16
教材に最適です。頂戴します。

691:デフォルトの名無しさん
12/02/13 03:35:57.87
>>687
完全版がくるとは思わなかったw

692:デフォルトの名無しさん
12/02/13 06:42:43.63
日本と中国の二者択一を迫る米国
URLリンク(www.chosunonline.com)

米国で大統領補佐官(国家安全保障担当)を務めたブレジンスキー氏は「韓国が米国との同盟を
強く望んだとしても、米国が韓半島から手を引く時代は少しずつ近づいている」と指摘する。

韓国には「中国による東アジアの覇権を受け入れ、中国とさらに接近する」道と、(反日行為をやめて)
「歴史的な反感にも関わらず、日本との関係をさらに強化する」という二つの道が選択肢として提示されていると明言した。

「中国に頼る」ということは、中国の付属品のように屈従して延命を図り、その下で生き延びるという意味だ。
「日本と手を結ぶ」ことについては、説明する必要もないだろう。

与党も野党も、あるいは右も左も関係なく、韓国のあらゆる政治勢力は、
この状況で5000万の国民をどちらの方向に導くか、決断を下さなければならない。


米国 「もう韓国は捨てるから、中国の植民地になるか、親日になり日本の植民地になるか選べよ」 ★3
スレリンク(poverty板)

693:デフォルトの名無しさん
12/02/13 15:25:22.15
>>691
バグ直しただけです

694:デフォルトの名無しさん
12/02/13 20:31:33.76
荒らすだけが目的の奴が最近ちょろちょろとじゃまくさいな。

695:デフォルトの名無しさん
12/02/13 20:57:46.64
お前のことか。
そうやって煽り文句書いて自演で荒らすんだろ。
気持ちわりぃ。

696:デフォルトの名無しさん
12/02/13 21:10:05.86
うるさいゴミ

697:デフォルトの名無しさん
12/02/13 21:19:17.63
>>694は荒らし?

698:デフォルトの名無しさん
12/02/13 21:24:01.83
荒らしというより自分にとって都合の悪い話は全部荒らしに見える精神障害の一種

最近は自己中な精神構造から発症するうつ病患者がいるらしいし、その類

699:694
12/02/13 21:56:32.08
ちなみに俺が荒らしと思うのは
>>695
>>696
>>698
あたり。いずれもたぶん荒らし兼自己紹介だな。
前みたいにコテハン使ってくれればいいのになあ。そうすればあぼーんしやすいのに。

700:デフォルトの名無しさん
12/02/13 21:58:38.13
自己紹介乙
コテ付けてくれ

701:デフォルトの名無しさん
12/02/13 22:03:55.44
しばらく書き込みもなくて落ち着いてるところに荒らしがどうのと燃料投下してる辺りどう見ても荒らしです。
お疲れ様でした。

702:デフォルトの名無しさん
12/02/13 22:04:38.96
URLリンク(www17.ocn.ne.jp)
>うつ状態を引き起こす要因
>自己愛性パーソナリティ
>過剰な賞賛を求める特権意識が強い、相手を自分の目的にしか利用しない。
>相手に対する共感の欠如、他者への激しい嫉妬、尊大で傲慢な態度がある。

自分が気に入らないとすぐ荒らし扱いするのは
>>694はこの辺りだろうな、自覚もないみたいだしかわいそうに

703:デフォルトの名無しさん
12/02/13 22:06:12.90
>>702
うるさい池沼

704:デフォルトの名無しさん
12/02/13 22:08:30.01
>>699 ← 昨日の夜中から荒らすネタがなくて自演で無理矢理荒らし兼自己紹介を始めた人です

705:デフォルトの名無しさん
12/02/13 22:11:27.18
なんだ、自己紹介だらけで礼儀正しいいいスレじゃないか。

706:デフォルトの名無しさん
12/02/13 22:28:37.19
>>699
>>694が抜けてるぞ。

707:デフォルトの名無しさん
12/02/13 22:36:19.94
>>706
死ね死ね死ね死ね死ね死ね死ね死ね

708:694(本物)
12/02/13 22:39:59.47
>>699は俺じゃない。
人のレス番騙って荒らすとかタチが悪いな。

709:694
12/02/13 23:05:20.54
>>708
偽物はお前だろ、死ねゴミクズ。
人に迷惑かけないように行方不明で死ぬんだぞ。
お前は生きてるだけで迷惑なんだから死ぬときくらい迷惑かけるなよカス。

710:デフォルトの名無しさん
12/02/13 23:16:53.97
質問も何もきてないのにいきなり荒れててワラタw

711:デフォルトの名無しさん
12/02/13 23:49:13.47
>>710
 >>694

712:694
12/02/14 00:09:53.24
すげえ。いつのまにか俺が3人もいる。

713:694
12/02/14 00:10:50.66
11人いる!


714:デフォルトの名無しさん
12/02/14 00:20:24.34
>>694は何でわざわざこのスレ選んで荒らし始めたんだ?

715:デフォルトの名無しさん
12/02/14 00:33:25.12
Firefox のクラッシュは、Firefox 本体の不具合に限らず、外部のプログラムによる干渉、想定外のデータの読み込みや操作によって引き起こされます。
特に、Firefox と連携するプログラム (アドオンなど) や想定外の動作をするスクリプト、悪意のあるソフトウェア (マルウェア) が原因の多くを占めます。
Firefox 本体の不具合がクラッシュの原因となっている場合、たいていは最新版で修正されています。
まず、Firefox を最新版へ更新してください (初期設定では自動的に更新されます)。
Firefox を更新しても引き続き Firefox がクラッシュするようであれば、Firefox 本体の不具合ではない可能性があります。
このトラブルシューティングでは、そうした際に考えられるいくつかの原因と解決策を紹介します。

716:デフォルトの名無しさん
12/02/14 00:47:02.79
>Firefox 本体の不具合がクラッシュの原因となっている場合、たいていは最新版で修正されています。
たいていとかいう単語が出てくる程頻繁にクラッシュするゴミブラウザ誰が使うんだよ
使ってるのは一部の情弱だけなんだからいちいちコピペするな

717:デフォルトの名無しさん
12/02/14 00:47:40.28
>>714
さぁ、仕事でもクビになったんじゃね?w

718:デフォルトの名無しさん
12/02/14 14:54:12.00
以下の二つのコマンドで出力結果が異なるのはバグでしょうか。

perl -MPOSIX=strftime -le 'print strftime ("%s", localtime)'
perl -MPOSIX=strftime -le 'print strftime ("%s", gmtime)'


719:デフォルトの名無しさん
12/02/14 15:07:56.91
localtimeやgmtimeが返す値にはタイムゾーンの情報が含まれていなくて、
strftimeの%sはTZ環境変数に基づいて年月日時分秒を解釈するからそうなる。

720:デフォルトの名無しさん
12/02/14 15:19:12.68
日本からの資金援助
・6000億ドル(併合から終戦まで)1965年
・8億ドル+α(経済協力金)  1965年
・40億ドル (特別経済協力金) 1983年
・100億ドル (通貨危機救済金) 1997年
・200億ドル (ウォン高救済基金)2006年
・300億ドル (ウォン安対策IMF、韓国に2.8兆円融通)2008年
その他、2002日韓ワールドカップのスタジアム建設費の融資した300億円は未返済


・併合に反対だった伊藤博文を親日派の安重根が暗殺した結果、併合が決定的となった
・朝鮮内部で親清派・親露派・親日派などが争い、親日派が勝った結果、望んで併合された
・従軍慰安婦は強制ではなく職業売春婦であり、下士官以上の収入を得ていた
・強制連行はほんの数十人で、大多数は仕事を与えてもらったか、自ら求めてやってきた出稼ぎ労働者か密航者
・創氏改名は日本で働く際に差別されないため、日本人の名前を自ら望んだ(※改名しない人もいた)
・創氏改名によって下層階級者がこぞって名門姓である「金」を名乗ったため、「金」が多数派となった
・併合後、日本によって教育やインフラへの投資が行われ、生活水準が著しく向上した
・韓国の発展は日本からの援助や併合時の置き土産(約60兆円)がなければ有り得なかった
・戦後、李承晩という独裁者が自衛隊発足前の日本から竹島を奪い取った
・日本から預かった北朝鮮への賠償金や援助金は韓国が使ってしまった
・上記の日本からの援助及び、北朝鮮への援助を使ったことを国民に正確に説明していない
・出稼ぎ労働者や密航者である同胞の在日韓国人・朝鮮人を引き取りもせず、日本に押し付けている


721:デフォルトの名無しさん
12/02/14 15:53:35.47
>>718
何でもかんでも開発環境のバグにするなよゴミ
バグってるのはお前の頭だろ

722:デフォルトの名無しさん
12/02/14 17:08:01.93
>>718
何でPerlの仕様も読まずに質問してんだ池沼。

723:デフォルトの名無しさん
12/02/14 17:26:16.62
Firefoxってバグ直さずバージョンだけ上がっていく伝説の糞ブラウザか

724:デフォルトの名無しさん
12/02/14 18:19:09.88
>>723
糞ブラウザって言うとブラウザみたいにきこえるぞ
あれはただの産廃だよ

725:デフォルトの名無しさん
12/02/14 19:01:14.74
どうしてブラウザの話になってんだよ糞は>>723-724だろ

726:デフォルトの名無しさん
12/02/14 20:23:56.20
>>725
よう、糞
元気か?
頭の調子はどうだ?

727:デフォルトの名無しさん
12/02/14 20:50:22.08
朝鮮人がわいとるのー

728:デフォルトの名無しさん
12/02/14 21:25:50.30
ちんちんかいかい

729:デフォルトの名無しさん
12/02/14 21:39:01.98
>>722
POSIX仕様はPerl仕様の範疇に無い。
更に%sは拡張仕様。

730:デフォルトの名無しさん
12/02/14 23:03:48.99
>>726

チンカス

731:デフォルトの名無しさん
12/02/14 23:12:04.09
>>730

マンカス

732:デフォルトの名無しさん
12/02/15 00:18:06.24
連想配列の中の値が全部空文字列だったときにループを飛ばすような処理を考えて

next if !grep { $_ ne q{} } values %hash;

というような書き方をしたんだがどうも直感的じゃなくてパッとしない。
どう書きなおせばいい? サブルーチンに出して適切な名前つけるべき?

733:デフォルトの名無しさん
12/02/15 00:29:19.01
>>732

next if '' eq join '', values %hash;

パッと思いつくのはこれくらいかなぁ
特に見やすくなったとは思えんが・・・

サブルーチン化するかコメントでも書いておくのが正解じゃね

734:デフォルトの名無しさん
12/02/15 00:54:46.31
>>733
ありがとう。joinは盲点だった。
とりあえずサブルーチンにしといて
%hashをメンバ変数にしたクラスのメソッドに移すよう
TODOリストに加えとくことにするよ。

こーゆーのって結局おざなりになっちゃうわけだけど……やれやれ。

735:デフォルトの名無しさん
12/02/15 01:04:45.23
>>719
>localtimeやgmtimeが返す値にはタイムゾーンの情報が含まれていなくて、
含まれていないにも関わらず、strftime の結果が異なるのは、strftime は
引数の値を見ているのではなくて、引数部分に記述されているのが何かを
見ているってことなの?本当なの?

736:デフォルトの名無しさん
12/02/15 01:55:44.13
>strftimeの%sはTZ環境変数に基づいて年月日時分秒を解釈するからそうなる。

737:デフォルトの名無しさん
12/02/15 01:58:05.42
マジカルインクリメントってひらがな対応してたのかよwwwwwwwwwww
はやく教えろよwwwwwwwwwwwwwwwwwwww

738:デフォルトの名無しさん
12/02/15 02:15:48.95
>>732
読みやすさとは関係ないけれど、hash が大きい場合は、grep だと最初の一個が
空でなかった場合でも全部なめてしまうので、効率よくないよ。



739:デフォルトの名無しさん
12/02/15 08:26:13.78
>>722
つか、localtime/gmtimeの概念はPerl誕生よりず~っと前からあるよ

740:デフォルトの名無しさん
12/02/15 08:38:49.79
>>738
そんなん誰でも知ってるだろ低能


741:デフォルトの名無しさん
12/02/15 09:38:07.45
>>732
use List::MoreUtils qw(all);

next if all { $_ eq q{} } values %hash;

742:デフォルトの名無しさん
12/02/15 12:59:47.65
もういいです

743:デフォルトの名無しさん
12/02/15 22:04:02.05
strftimeは引数を無視して、自分でtime関数を呼び出してTZ環境変数に
基づいて年月日時分秒を解釈するんですね。とても勉強になりました。

744:デフォルトの名無しさん
12/02/15 22:39:16.33
結局ファイルの行数を得るにはどの方法が一番いいんだよハゲ

745:デフォルトの名無しさん
12/02/15 22:52:41.19
wcでも呼んどけタコ

746:デフォルトの名無しさん
12/02/16 00:47:39.85
「一番いい方法」なんてのはない。
好きな方法でやればいい。
それがTMTOWTDI。


747:デフォルトの名無しさん
12/02/16 01:49:15.98
ただ公式faqでの回答はゴミだから参考にしてはいけない

748:デフォルトの名無しさん
12/02/16 01:58:19.69
>>743
strftimeの%sがタイムゾーン分の秒数を引いてるだけじゃない?
私の手元の環境の実装だと、そんな感じだった。

749:デフォルトの名無しさん
12/02/16 04:28:26.00
うん。
>>743 の人は何かひどく誤解してるようなんだけど、
何をどう誤解してるのかがよくわからない。


750:デフォルトの名無しさん
12/02/16 07:59:20.52
 韓国人アイドルグループ「GREAT」が歌手活動に必要な在留資格を得ずに活動していた事件で、警視庁組織犯罪対策1課と新宿署は
15日までに、入管難民法違反(資格外活動)容疑で、20~27歳の男性メンバー5人を書類送検した。事情を知りながらグループを来日
させ活動させた同法違反のほう助容疑で、ライブハウスを実質的に経営する韓国籍の男性社長(48)=東京都新宿区=も書類送検した。

 同課によると、メンバー5人は容疑を認め、社長も「デビューしたてのグループが日本で売れれば、見返りが入ると思った」と認めている。 

.URLリンク(news.livedoor.com)

751:デフォルトの名無しさん
12/02/16 21:11:43.94
牛丼クレープ

752:デフォルトの名無しさん
12/02/17 12:38:31.97
$s =~ s/hoge(\d+)/ /g;
みたいに"hoge数字"グローバルに置換して、マッチした数字部分を全部取得する方法ってある?

753:デフォルトの名無しさん
12/02/17 12:41:20.06
grepで二度手間を試みる

754:デフォルトの名無しさん
12/02/17 13:05:32.96
my @match;
$s =~ s/hoge(\d+)/push @match, $1; " "/ge;

755:デフォルトの名無しさん
12/02/17 22:34:02.61
得意満面の s///ge 内の push。

756:デフォルトの名無しさん
12/02/18 01:50:59.38
何か変?

757:デフォルトの名無しさん
12/02/18 03:50:34.97
>>754
ヘー、勉強になりまった。

758:デフォルトの名無しさん
12/02/18 03:55:26.07
んにゃ、きわめて真っ当。

759:デフォルトの名無しさん
12/02/18 03:55:59.40
>>754
ていうか
push @list, $1 while s/hoge(\d+)//;
って書きこみしようとしていた。

760:デフォルトの名無しさん
12/02/18 13:56:55.08
ホントPerlは勉強には事欠かない言語ってことを再認識した

761:デフォルトの名無しさん
12/02/18 17:50:37.78
test_dataディレクトリにいろんなログデータが入っていて
管理モードを作って、このディレクトリ名をrenameで変更したいのですが
test_dataディレクトリの中にあるファイルに誰かが書き込んでいるとき
ディレクトリ名を変更するとデータが消えたりするんですが
それを回避できるいい方法はないんでしょうか?

ディレクトリ全体をロックすると重くなるのでそれ以外の方法でです

762:デフォルトの名無しさん
12/02/18 18:01:46.29
>>761
$ chmod 700 test_data
$ mv test_data [好きな名前]
$ chmod 777 [変更した名前]

763:デフォルトの名無しさん
12/02/18 19:52:25.24
>>762
その方法でディレクトリ名を変更すると
変更前の現在書き込み中のファイルは途中で書き込みが中断されますか?

764:デフォルトの名無しさん
12/02/18 20:11:35.27
OSは秘密ですか。そうですか。

765:デフォルトの名無しさん
12/02/18 20:12:18.88
>>763
試してみればわかるんじゃないかな?
これはOS依存になると思う、Ubuntuで試した所・・・
書き込み用にファイルを開いているタイミングでパーミッション変えても書き込みは続行する。
次の書き込みからファイルオープンができなくなる。

766:デフォルトの名無しさん
12/02/18 20:15:06.30
windows7でactiveperlなのでUNIXコマンドはできないです

767:デフォルトの名無しさん
12/02/18 20:17:59.39
>>766
もう、スクリプトを止めたら?
ディレクトリの名前を書き換えて再開すればいいんじゃね?

768:デフォルトの名無しさん
12/02/18 20:21:49.89
windowsだとオープンしているファイルがあるとディレクトリ名の変更が出来ないから、
test_dataディレクトリのファイルをいじるときはダミーのファイルをオープンする。
管理モードではディレクトリのリネームが成功するまでリトライする。

769:デフォルトの名無しさん
12/02/18 21:09:46.43
つtechnet.microsoft.com/ja-jp/library/cc771672(v=ws.10).aspx

770:デフォルトの名無しさん
12/02/19 01:03:13.41
mkdirで排他用のディレクトリを作る
このディレクトリがある間は、それ以降test_dataの中のファイルにアクセスできないようにする
この排他用ディレクトリができる前にtest_dataディレクトリの中のファイルに書き込んでいるプロセスがあるかもしれないので
sleepで10秒くらい待ってからrenameでtest_dataディレクトリ名を変更すれば
その書き込んでいるプロセスも終了しているだろうから安全にrenameできるだろう

771:デフォルトの名無しさん
12/02/19 01:24:07.44
もうperlに閉じた話じゃなくなってるな。OSがらみ。

772:デフォルトの名無しさん
12/02/19 02:39:57.73
スキルがなくて2chで質問するような低能は込み入った作業をしなさんなってこった

773:デフォルトの名無しさん
12/02/19 17:37:49.27
perlでは「"0"」が偽と判断されてしまうようなんですけど、
「"0"」を真と見なすには、「length("0")」とするしかないでしょうか。
みなさんどうされてますか。

774:デフォルトの名無しさん
12/02/19 17:44:59.83
そのために defined があるんでしょつりですね

775:デフォルトの名無しさん
12/02/19 17:45:34.24
お前の頭の中のアルゴリズムに問題があるだけだろ

if ( $a ne "" )

776:デフォルトの名無しさん
12/02/19 17:47:59.64
! を使う

777:デフォルトの名無しさん
12/02/19 17:49:19.55
そのアイディアにはびっくりしました

778:デフォルトの名無しさん
12/02/19 17:51:58.96
びみょうにバグってますね

正しくは
if ( $a eq "0" )

779:デフォルトの名無しさん
12/02/19 18:05:00.58
windowsならば>>770がいいと思いました

780:デフォルトの名無しさん
12/02/19 18:24:34.77
うるさいゴミ

781:デフォルトの名無しさん
12/02/19 18:54:05.89
なに?作文?

782:デフォルトの名無しさん
12/02/19 19:14:41.97
>>773
文字を数値として比較しようとするからだろ基地害
お前まじでプログラミング向いてないから失せろ異常者

783:デフォルトの名無しさん
12/02/19 20:41:06.16
perlでは変数に値を代入後、格納したものが文字列なのか数値なのか
の情報が失われてしまうようなんですけど、どちらが代入されたのか
調べる方法があるのでしょうか。
みなさんどうされてますか。

784:デフォルトの名無しさん
12/02/19 20:52:32.26
>>782
数値じゃなくて真偽値だろ

785:デフォルトの名無しさん
12/02/19 21:14:28.53
>>783


C言語もやったことのないようなゴミがこういうレスするんだろうな。
自分が格納した値の型も忘れるような痴呆は回線切れよ。

786:デフォルトの名無しさん
12/02/19 21:22:19.61
>>783
おいアホ釣り針がお前のアレなみに小さいぞ


787:デフォルトの名無しさん
12/02/19 21:22:47.45
>>783
ないよ。Perlはじゃんじゃか動的に型付けするから。
文字列か数値かで処理を分けたいなら同じ変数に入れるべきじゃない。

具体的に困ってるコード見てみないとアドバイスできないけど。

788:デフォルトの名無しさん
12/02/19 21:46:39.32
(($_ ^ $_) eq '0') ? print "$_: numeric\n" : print "$_: string\n" for (1, '1');

1: numeric
1: string

789:デフォルトの名無しさん
12/02/19 23:10:36.14
>>783
評価の仕方で、文字だったり数字だったりでPerlさんが自動で判断してくれる。
文字とかも数字として評価する事もできるしな。

790:デフォルトの名無しさん
12/02/19 23:22:25.60
>文字とかも数字として評価する事もできる

馬鹿の書いたソースでよく見かけるね

791:デフォルトの名無しさん
12/02/20 00:47:49.78
utf8フラグがONになっているものが文字列。

792:デフォルトの名無しさん
12/02/20 00:57:52.14
数値比較だと空データは0として見なされる

793:デフォルトの名無しさん
12/02/20 01:16:22.87
($_ ^ $_) =~ /^\x00*$/ でもいいか

794:デフォルトの名無しさん
12/02/20 02:55:05.85
>>789
> 評価の仕方で、文字だったり数字だったりでPerlさんが自動で判断してくれる。
> 文字とかも数字として評価する事もできるしな。
このへんがperlの便利でもあり厄介でもあるところ。
まあ慣れれば便利なことの方が多い。

795:デフォルトの名無しさん
12/02/20 14:11:58.96
>>788
これはどういう仕組みなんですか?うまく動いたのですが、つまり同じ数値をxorした結果
'0' = ビット列00110000になっているという事ですよね。
調べたらperlは文字列にビット演算することができてその場合はasciiコードとして演算されるとの事でしたが、
文字列でも数字でも同じ物をxorすると0になり、結果は同じではないかと思いました。

796:デフォルトの名無しさん
12/02/20 15:12:44.00
>>795
同じ数値同士のXORは数値の0
同じ文字列同士のXORは文字コード0 つまり "\x00"

>>788 の ($_ ^ $_) eq '0' は
$_ が数値なら 0 eq '0' で、文字列値なら "\x00" eq '0'
あとはわかると思うけど、eq は文字列比較なので前者の場合は左側の数値 0 は文字列 '0' に変換されてから比較されて、結果真になる。

797:デフォルトの名無しさん
12/02/20 15:20:05.81
>>798
はぁ~~なるほど、分かりました。
文字列同士のXORで得られた数値は文字コード(という表現が適切かどうかは分かりませんが)として再評価されるんですね。
分かりやすい解説レスありがとうございました。

798:デフォルトの名無しさん
12/02/20 15:22:32.68
× /2^798
○ /2^796
失礼しました

799:788
12/02/20 19:40:36.19
まぁ、パズルに近いけどね。
破壊的な変数の利用を避けるべきなら、
破壊されやすい変数の利用も避けるべきで。

800:age
12/02/20 21:14:30.39
webクローラのgunghoモジュール
がどうしてもインストールできない
POEエンジンインストールのところで(POE::component::*)エラーになる
解決策教えて
それか別のperl高性能クローラ教えて

801:デフォルトの名無しさん
12/02/20 21:22:03.45
癌呆の略字を知らないモグリかよ


802:デフォルトの名無しさん
12/02/20 21:22:16.89
馬鹿には無理

803:age
12/02/20 21:39:20.56
そんな子といわずに教えて


804:デフォルトの名無しさん
12/02/21 00:34:24.86
恥かしくてもう出てこられない785-787。

805:デフォルトの名無しさん
12/02/21 01:26:31.73
標準入力を最後まで読み取る必要があるんだけど処理はしない。
とりあえず while (<>) {} とか書いてるが、もっとスマートな書き方ないかな?


806:デフォルトの名無しさん
12/02/21 01:35:09.55
処理しないんなら読みとる必要も無いだろ


807:デフォルトの名無しさん
12/02/21 01:52:13.17
なんらかのプログラムの出力を吐ききらせたいとかそういうのじゃないのかね

808:デフォルトの名無しさん
12/02/21 01:53:58.95
^Dだか^Zが来るまで読み捨てたいのかね。
@_ = <>;
とか。スマートとは思わんが。

809:デフォルトの名無しさん
12/02/21 02:26:19.84
低能は黙ってろ

810:デフォルトの名無しさん
12/02/21 02:37:16.10
プロさんちーっす
0 while<>;
はどうかと思った

811:デフォルトの名無しさん
12/02/21 03:20:20.57
>>806
procmailのフィノレター書いてるですが、最後まで読んでやらんと
パイプ新だがなって怒られるんです(´;ω;`)

>>808
それメモリ喰らいません?
undef = <>;的な書き方ができたらウフーだなとかオモテますた。

>>809
ごめんなさいぃぃぃ

>>810
かっこぇぇ惚

812:デフォルトの名無しさん
12/02/21 03:20:52.14
>>807
愛してます☆

813:デフォルトの名無しさん
12/02/21 04:18:56.02
(undef) = <STDIN>;

() = <STDIN>;

814:デフォルトの名無しさん
12/02/21 04:25:31.57
>>813
ウフー! ウフー! ウフー! ウフー! ウフー!

自分の中ではこれFAなりでマジ惚れ危険!
さんきゅーさんきゅーありがとベリーマッチ

関係ないけど皆さんやっぱ<>より<STDIN>推奨?

815:デフォルトの名無しさん
12/02/21 05:18:06.37
この場合は読み込み元が標準入力じゃないと成立しないんだから、
@ARGV の有無で読み込み元が変わる <> よりも <STDIN> のほうが間違いないでしょ。

816:デフォルトの名無しさん
12/02/21 05:33:53.62
確かに相手が自前じゃないわけだし、なに食わされるかわかんないですもんね…
本当に遅くまで、もとい早朝までありがとうございました。真剣感謝です。

817:デフォルトの名無しさん
12/02/21 05:36:15.49
そんなトリッキーな書き方が許されるのは中学生までだよねー

818:デフォルトの名無しさん
12/02/21 10:28:33.57
perlのどこらへんがトリッキーじゃないんだ
奇をてらいたくなきゃあ別のクソでもいじくりまわしてろ

819:デフォルトの名無しさん
12/02/21 12:15:17.39
>>818
全部トリッキーに見えるのか。
どうかしてるよ、お前。

820:デフォルトの名無しさん
12/02/21 17:56:20.52
>>818
Perlごときで挫折したプログラミング不適格者の、典型的な言い訳だな。
体育会系会社に入って営業でもやってろw

821:デフォルトの名無しさん
12/02/21 19:52:44.30
" () = " は一応、リストコンテキストで呼び出すための慣用句ってことになってる。

URLリンク(perldoc.jp)

822:デフォルトの名無しさん
12/02/21 23:10:03.46
(<>);

823:デフォルトの名無しさん
12/02/21 23:21:22.49
(i)

824:デフォルトの名無しさん
12/02/22 00:55:04.05
トリッキーではないわけね

825:デフォルトの名無しさん
12/02/22 00:57:47.51
>>824
アホか?
フトンの中でクソしてさっさと寝ろよ


826:デフォルトの名無しさん
12/02/22 01:15:09.20
フトンの中でクソなんて発想が許されるのは三歳(さんちゃい)までだよねー

827:デフォルトの名無しさん
12/02/22 09:38:07.34
×さんちゃい
○ちゃんちゃい

828:デフォルトの名無しさん
12/02/22 23:44:52.77
('<>')

829:デフォルトの名無しさん
12/02/23 01:24:50.25
while ( my $hoge = shift @argv )やwhile( my $it = $it->next) ってそのうちundefになって終了するはずなんですが、
while(defined( my $hoge = shift @argv))のようにdefinedを使ってるコードが多いように思います。なぜなんでしょうか。


830:デフォルトの名無しさん
12/02/23 01:40:11.33
>>829
@argvの中に数字の0とか空文字が入る場合、前者だとそこで止まっちゃう。
あとイテレータに最後のundefがあるとは限らないよ。

831:デフォルトの名無しさん
12/02/23 02:12:06.81
>>828
正面向きのヒヨコみたい

832:デフォルトの名無しさん
12/02/24 01:19:58.30
>>830
ほんとですね、ありがとうございます

833:デフォルトの名無しさん
12/02/24 13:13:11.47
うるさいゴミ

834:デフォルトの名無しさん
12/02/24 14:08:16.64
>>833
なるほど、自分がついて行けない話の時はそうなるのか
産廃並みの脳味噌だなw

835:デフォルトの名無しさん
12/02/24 21:56:49.58
perl -E '@a = <STDIN>; eval "@a"'
これをもっと短くすることをお願いできないでしょうか?

836:デフォルトの名無しさん
12/02/24 22:34:19.63
>>835
何がしたいのそれ
echo 'print "foo";' | perl

837:デフォルトの名無しさん
12/02/24 23:17:25.64
選択中のテキストに対してシェルコマンドを実行する事が出来るアプリ(Meadow)を使って
perl -pel "s/hoge/ほげ/"
というような感じのことをしてみたのですが
perlスクリプト書いて選択して実行してみたいなと思ったところです。perl だけでは動きませんでした。

今はこうやってます。(少し短くなった)
perl -e "$/=undeff; eval <>"

838:デフォルトの名無しさん
12/02/24 23:56:04.53
パッパッパパッパぁ~Perlライス

839:デフォルトの名無しさん
12/02/25 00:14:16.96
>>837
俺はvimしか使わんからEmacsの流儀は知らんけど、なんかやり方ありそうよ。
URLリンク(maruta.be)

vimなら行選択して":!perl"でもしてやればカレントバッファに結果が出る。

840:デフォルトの名無しさん
12/02/25 00:23:42.23
>>839
Linux上ではperlだけで動くので多分WindowsとMeadowのせいなんだと思います。
わざわざ調べてくださってありがとうございます!

841:デフォルトの名無しさん
12/02/25 19:21:23.07
文字列を8もじずつ分割して配列にしたいんだけど
どうしたらかっこういいですか?

842:デフォルトの名無しさん
12/02/25 19:36:19.69
そのかっこいい方法は、
最速ですか?

843:デフォルトの名無しさん
12/02/25 19:56:46.61
>>841ゴミは書き込みするなって

844:デフォルトの名無しさん
12/02/25 20:05:36.52
>>842
格好いい=最速、最速=格好いい
昔から決まってんだろ

845:デフォルトの名無しさん
12/02/25 20:08:55.00
最速の方法は、
文字へのポインタを8づつ増加させながら
配列に加えていく方法だろうね。

846:デフォルトの名無しさん
12/02/25 20:19:58.87
my @div = $str =~ /.{1,8}/g ;

これ以上短くできンの?


847:デフォルトの名無しさん
12/02/25 20:54:05.67
できたよ。
関数作ればコードも短く
意味もわかりやすくなる。


my @div = splitn($str,8);

848:デフォルトの名無しさん
12/02/25 21:25:21.82
>>847
それってホントに動作の意味が分かりやすくなんの?
関数のホントの意味知らないと、動作が絶対に分からないような作りになってね?
分かりやすいってのはウソで、実はそれ、説明性が低いだろ。


849:デフォルトの名無しさん
12/02/25 21:36:22.83
my @div = unpack('(A8)*', $str);

850:デフォルトの名無しさん
12/02/26 05:45:04.09
>>849
                 ,r=''""゙゙゙li,
      _,、r=====、、,,_ ,r!'   ...::;il!
     ,r!'゙゙4       `'ヾ;、, ..::::;r!'゙
    ,i{゙‐'_,,_         :l}..::;r!゙
.  ,r!'゙4 4-ー‐‐==、;;;:....   :;l!:;r゙
 ,rジ          `~''=;;:;il!::'li
. ill゙  ....         .:;ll:::: ゙li
..il'   ' ' '‐‐===、;;;;;;;:.... .;;il!::  ,il!
..ll          `"゙''l{::: ,,;r'゙
..'l!       . . . . . . ::l}::;rll(,
 'i,  ' ' -=====‐ー《:::il::゙ヾ;、
  ゙i、            ::li:il::  ゙'\
  ゙li、      ..........,,ノ;i!:....    `' 、  ∧__∧
   `'=、:::::;;、:、===''ジ゙'==-、、,,,__ `'(・∀・ )
     `~''''===''"゙4        ~`''ー(   ))
                         u~u  good job

851:デフォルトの名無しさん
12/02/26 12:34:25.82
perlのマニュアルでわかりやすいのってある?
省略したときに$_とか$@を使うのか
引数の中身を破壊するのかしないのか
戻り値が$_とか$@に入るのか
ってのがいつもわからない

852:デフォルトの名無しさん
12/02/26 12:57:09.78
以下のsub.plは単体で呼び出すとうまく動くのですが、main.plから呼び出すと
|$ perl sub.pl を実行します
|"\x{0436}" does not map to cp932. "\x{042c}" does not map to cp932. "\x{00b5}" does not map to cp932. ...
となってしまいます。何故化けてしまうのでしょうか?
やりたかったこと(標準出力を一時的に切り替えたい)はselectを使うことで解決したのですが、
以下がうまく行かない理由が分からず、分かる方がいらしたら教えていただきたいです。
両ファイルともutf-8で保存しています。windows環境です。

#### main.pl ####
use strict;
use utf8;
use Encode;
binmode STDIN, ":encoding(cp932)";
binmode STDOUT, ":encoding(cp932)";
binmode STDERR, ":encoding(cp932)";
my $command = "perl sub.pl";
print "> $command を実行します\n";
print decode("cp932", `$command`);

### sub.pl ####
use strict;
use utf8;
binmode STDIN, ":encoding(cp932)";
binmode STDOUT, ":encoding(cp932)";
binmode STDERR, ":encoding(cp932)";
open DEF_STDOUT, ">&STDOUT";
open STDOUT, ">:encoding(cp932)", "./test.txt" || die "ファイルが開けません: $!";
print "testです";
close STDOUT;
open STDOUT, ">&DEF_STDOUT";
binmode STDOUT, ":encoding(cp932)"; # この行を消すと、main.plの実行は上手くいくのですが、単体実行でwide character in print 化けます。
print "生成しました\n";

853:デフォルトの名無しさん
12/02/26 13:33:21.59
printfで文字列に全角文字が混じった時に、
全角は2文字分の幅として認識させるにはどうすれば

ぐぐると、やたら面倒そうなのとか、根本から変えちゃうようなのしか見つからない

854:デフォルトの名無しさん
12/02/26 13:55:58.80
>>853
罫線問題もあるので、極めて難しい超難問ですお

855:デフォルトの名無しさん
12/02/26 14:23:31.52
じゃあ、罫線は無視で

856:デフォルトの名無しさん
12/02/26 14:26:05.67
罫線問題って呼び方は聞いたことないけど、「曖昧な文字幅」の扱いのことだよね。
Winユーザでもギリシャ文字が場合によって半角だったり全角だったりなんてのは見たことあると思うけど。

857:デフォルトの名無しさん
12/02/26 14:34:36.92
ハングルは半角か全角か

858:デフォルトの名無しさん
12/02/26 14:51:51.24
こんなのでよくね?

use utf8;

sub count {
my $str = shift;
my @chars = split(//,$str);
my $kigou = quotemeta("!@#$%^&*()_+|~-=\`[]{};:'\",./<>?");
my $count = 0;
for (@chars) {
$count += /[a-zA-Z0-9]|$kigou/ ? 1 : 2;
}

return $count;
}

print count("1234ほげほげ"); # =>12

859:デフォルトの名無しさん
12/02/26 15:16:54.51
>>852
俺の環境(Ubuntu)では文字化けしなかった。
cp932の所は環境に合わせるためにutf-8に書き換えたがな。

ってか、ちゃんと文字のencodeとdecodeを理解するべきだろ・・・
魔法のおまじないのように「binmode STDERR, ":encoding(cp932)";」こういうの使わない方がいいと俺は思うけど。

860:デフォルトの名無しさん
12/02/26 15:19:44.17
decode('cp932', sprintf("%-10s", encode('cp932', $str) ) );

結局、こんなんにしました

861:デフォルトの名無しさん
12/02/26 15:23:22.06
>>860
なんとひどい・・・
無駄なオーバーヘッドかかりまくり・・・
センスの欠片も感じられない、もっと本読めマジで本読め

862:デフォルトの名無しさん
12/02/26 15:36:02.70
>>861
我流でやってきたので・・
おすすめの本があれば教えて下さい。

863:デフォルトの名無しさん
12/02/26 15:45:40.64
>>862
自分で探せゴミクズ
そうやってすぐ他人にきくからゴミみたいなコード書くんだろ
ゴミコードをネットで晒して恥ずかしくないとか頭の中どうなってんだこの基地害

864:デフォルトの名無しさん
12/02/26 15:51:42.39
お前がどんなにゴミだクズだと罵ったところで、>>862は人として最低限のプライドもないから無駄だよ。

865:デフォルトの名無しさん
12/02/26 15:51:51.45
バイナリでいいやん

866:デフォルトの名無しさん
12/02/26 16:04:46.11
>>862
俺が読んでた本は、もう随分古い本だからな・・・
同じ本を薦めても情報が古過ぎる、新しい情報はネットから得てるし
amazonで適当に探して評価読んで良さそうなのを一冊見つければいいんじゃないか?

867:デフォルトの名無しさん
12/02/26 16:19:33.07
ネットからは得られないぞ
入門の情報はネットで十分だけど、ノウハウ的なものは金を出さないと得られない

868:デフォルトの名無しさん
12/02/26 16:27:51.02
応急の策としてなら>>860は別にそれほど悪くない。
速度的にもutf8のまま真面目にFULLWIDTH/HALFWIDTHを判定していくよりは速いぐらいかもしれない。

869:デフォルトの名無しさん
12/02/26 16:56:03.34
漏れが一切無いというのが安心できるな
シフトJISの時と全く同じ動作を得たいなら、シフトJISにするしかない

870:デフォルトの名無しさん
12/02/26 17:03:42.35
入力も出力もシフトJISなら処理もシフトJISで行ったほうがいいでしょ
utf8に変換する必要性ないでしょ

871:デフォルトの名無しさん
12/02/26 17:07:44.22
クソ性器表現のため処理はutfだろふざけんなks

872:デフォルトの名無しさん
12/02/26 17:09:37.67
もう頭痛くなってきたw
いい感じにひどいですね

873:デフォルトの名無しさん
12/02/26 17:31:21.20
うるさいゴミ

874:デフォルトの名無しさん
12/02/26 17:37:25.00
>>852
### sub.pl ####
use strict;
use utf8;
binmode STDIN, ":encoding(cp932)";
# binmode STDOUT, ":encoding(cp932)";
binmode STDERR, ":encoding(cp932)";
open DEF_STDOUT, ">&STDOUT";
open STDOUT, ">", "./test.txt" || die "ファイルが開けません: $!";
binmode STDOUT, ":encoding(cp932)";
print "testです";
close STDOUT;
open STDOUT, ">&DEF_STDOUT";
binmode STDOUT, ":encoding(cp932)";
print "生成しました\n";

875:デフォルトの名無しさん
12/02/26 17:52:22.23
ピログラムも知らないど素人向けでもないのにマルチバイト文字でメッセージ出す奴は基地害

876:874
12/02/26 18:01:58.62
それと多分、
open STDOUT, ">", "./test.txt" or die "ファイルが開けません: $!";

877:デフォルトの名無しさん
12/02/26 18:40:37.78
そこでjperlなわけか

878:852
12/02/26 19:09:09.34
>>859,874
レス有難うございます。
標準出力を切り替える前にも出力するためその行はコメントアウトできないです。

色々試してみたところ、デフォルトのSTDOUTを1度rawにするとsub.pl、main.pl共々上手く行きました。
binmode STDOUT, ":raw";
open DEF_STDOUT, ">&STDOUT";

重ねがけのような状態になっていたのでしょうか・・?
しかしsub.pl単体では上手く動いていたので謎です。
結局>>852の # この行を消すと、main.plの実行は上手くいくのですが、単体実行でwide character in print 化けます。
の理由は分からず。
Ubuntuの方が試してくださった所どちらも上手く動いたとの事なので、
Windowsでの挙動があやしいということなのかもしれません。

879:デフォルトの名無しさん
12/02/26 19:10:56.18
アホかよ……
cp932なんだからwinでためさねーと意味ないじゃん


880:874
12/02/26 19:36:49.24
>>878
use utf8;

binmode(STDOUT, ":encoding(cp932)");
binmode(STDOUT, ":encoding(cp932)");
layer(*STDOUT);
print "あああ";

sub layer { warn(join("/", PerlIO::get_layers($_[0])), "\n") }

これでアウトだしPerlIOは良く分からん。
確かに:rawを入れると直るね。

881:デフォルトの名無しさん
12/02/26 19:47:34.18
cp932でエンコードしたものをもう一度cp932でエンコードしようとしているんだから上手く動かないのは当然じゃないの?

882:デフォルトの名無しさん
12/02/26 20:12:07.34
だから初心者はjperl使えと口が酸っぱくなるほど、、、

883:874
12/02/26 20:20:55.64
>>881
ドキュメントに書いてくれええと思う。

884:デフォルトの名無しさん
12/02/26 20:37:36.28
cp932で二重エンコードは単なる間違いだけど、
utf-8で二重にやっちゃうのは頻繁に見る
そしてフラグを剥がして解決する

885:デフォルトの名無しさん
12/02/26 20:58:17.86
utf-8で二重にやっちゃうのも単なる間違いだからw

886:デフォルトの名無しさん
12/02/26 21:01:31.55
そろそろ1レスでわかるやつがペーストされるいよかん。

887:デフォルトの名無しさん
12/02/26 22:46:15.18
encode済みの文字列をencodeできてしまうのはフェイルセーフが欠如してるとしか思えんな
フラグ見れるのにそれ見ないんだぜ?

888:デフォルトの名無しさん
12/02/26 23:23:03.22
そんなもん言語仕様でどうにかしろよ

889:デフォルトの名無しさん
12/02/26 23:26:38.58
言語仕様までいかなくてもEncodeモジュール側でなんとかできそうなもんだが…
問い合わせてみようかな

890:デフォルトの名無しさん
12/02/26 23:57:50.15
それよか、ひとくるみしたらどうだ?おれならそうする

891:デフォルトの名無しさん
12/02/27 00:21:44.60
>>852のsub.plは、二度がけしているにもかかわらず
windows7のコマンドプロンプトだと化けないな

use utf8;
binmode STDOUT, ":encoding(cp932)";
open DEF_STDOUT, ">&STDOUT";
open STDOUT, ">&DEF_STDOUT";
binmode STDOUT, ":encoding(cp932)";
layer(*STDOUT);
print "生成しました\n";
sub layer { warn(join("/", PerlIO::get_layers($_[0])), "\n") }

>perl sub.pl
unix/crlf/encoding(cp932)/utf8/encoding(cp932)/utf8
生成しました

892:デフォルトの名無しさん
12/02/27 01:12:18.48
甘やかすな
二重encodeは問答無用で青画面

893:デフォルトの名無しさん
12/02/27 01:27:30.39
Win95並みのクソOSだなそれ

894:デフォルトの名無しさん
12/02/27 02:39:42.45
URLリンク(d.hatena.ne.jp)

ここ読め、かなり良いから。
変な使い方するな、理解してもないのに変な楽の仕方するな

895:デフォルトの名無しさん
12/02/27 06:48:35.60
とはいうもののクソの口から本当の楽の仕方は出てこない、
書かれることもない、

なぜなら>>894の能力が低いから


896:デフォルトの名無しさん
12/02/27 06:57:34.31
use utf8を書かないとうまく動かない時ってどんな時だ?

897:デフォルトの名無しさん
12/02/27 08:05:06.77
>>896
ASCII 以外が必要なほぼすべての時。


898:デフォルトの名無しさん
12/02/27 13:52:22.69
>>895
それめっちゃ分かる。
お前の能力めっちゃ低いもんな。

899:デフォルトの名無しさん
12/02/27 14:04:23.67
なぜなら俺はイタリアンじゃないから

900:デフォルトの名無しさん
12/02/27 19:39:56.47
アクセス解析で環境変数を取得するときに、リファラーに井桁が入ってると変数に代入されず
リファラーが取得できなくなってしまうのはどうすれば解決できますか

901:デフォルトの名無しさん
12/02/27 19:58:34.20
>>900
こちらへどうぞ。

Perlコーディング初心者質問スレ Part 63
スレリンク(php板)

902:デフォルトの名無しさん
12/02/27 20:06:31.96
>>901
誘導ありがとうございます。失礼しました。

903:デフォルトの名無しさん
12/02/27 20:14:14.61
勢いを見てもこのスレがPHPより人気なのが分かる

904:デフォルトの名無しさん
12/02/27 20:16:12.30
つーかPHPの質問スレ自体がなくてワラタw
PHP厨はこの世に存在しないのと一緒w

905:デフォルトの名無しさん
12/02/27 20:21:55.19
普通にたくさんあるだろ

906:デフォルトの名無しさん
12/02/27 20:23:33.91
それがなかったんだよw
バトルロワイヤルとかHello Worldを書き込むとかそういうスレしかなかったwww

907:デフォルトの名無しさん
12/02/27 20:24:47.12
>>905
つーか一覧でCtrl+Fですぐ調べられるから見てみろってwwww

908:デフォルトの名無しさん
12/02/27 20:31:15.49
【Perl,PHP】LLバトルロワイヤル21【Ruby,Python】
【perl->php】お願いがあるんだ
PHP使ってる奴らが憎いPerl>>>PHP
PHPを使って2ちゃんねるにHello Worldを書き込む
php使ってる奴はアホ、これからはRuby on Rails!


すさまじい
怨念が渦巻いている


909:デフォルトの名無しさん
12/02/27 20:36:02.02
やっぱりPerlだよな。
PHPとか言語仕様が糞なうえにセキュリティホール付でリリースするからマジないわ。
ゴミすぎてPerlとの比較対象にすらならない。
PHP選んでるって時点で情弱。
馬鹿にされたくなかったらPerlを選んでおくべき。

910:デフォルトの名無しさん
12/02/27 20:53:58.47
数えきれないほどあるけど?
【PHP】下らねぇ質問はID出して書き込みやがれ 116
スレリンク(php板)
PHP関連の書籍 第7版
スレリンク(php板)
IDにPerlが出たら神!PHPが出たらシメジ Part32
スレリンク(php板)
【PHP】フレームワーク CakePHP 13ホール目【v2.0】
スレリンク(php板)
【PHP】Yii Framework
スレリンク(php板)
【PHP】PHPフレームワーク総合スレ15
スレリンク(php板)
PHPでオークションサイトを作ろう!
スレリンク(php板)
[PHP][フレームワーク]CodeIgniter Part2
スレリンク(php板)
【PHP】ビューと業務ロジックを混在させる【PHP】
スレリンク(php板)
【初心者】励ましあいながらサイト製作【PHP】
スレリンク(php板)
Perl VS PHP
スレリンク(php板)
PHP>Java>>>超えられない壁>>>ASP>Perl
スレリンク(php板)
Java VS PHP
スレリンク(php板)
symfony PHPフレームワークpart2
スレリンク(php板)
【PHP】鏡の国2ch bbs
スレリンク(php板)


911:デフォルトの名無しさん
12/02/27 21:28:19.27
>>909 「セキュリティホール付でリリース」
コミュニティーがたよりない

912:デフォルトの名無しさん
12/02/27 21:53:31.46
PHPにはだんこがいみたいなひといるの?

913:デフォルトの名無しさん
12/02/28 00:05:00.57
質問なのですがPerlでこういうサイトって作れますか?
URLリンク(findrjp.com)
これはPHPだと思うんですけど
作るとしたらelsifで作る感じでしょうか?
こういうのってすぐ作れますか?

914:デフォルトの名無しさん
12/02/28 00:43:21.62
>>913
>>1を100回読んでから出直せゴミクズ

915:デフォルトの名無しさん
12/02/28 00:52:16.20
>Perlでこういうサイトって作れますか?
URLリンク(findrjp.com)
お前は言語を何だと思ってんだ?
PerlだろうとCだろうとC++だろうとシェルスクリプトだろうとできるだろ。

>これはPHPだと思うんですけど
「思う」じゃねーよ、Perlだったらどうすんだ?

>作るとしたらelsifで作る感じでしょうか?
そりゃ条件分岐くらい使うでしょうよ。

>こういうのってすぐ作れますか?
すぐの意味が分からないが仕様書出してもらえれば寝起き2時間で作れるよ。
文字通り朝飯前。

916:デフォルトの名無しさん
12/02/28 01:36:50.46
>>915
PHPとかperlってどこで判断するんですか?
結果ページのurlにはphpって入ってますけど

917:デフォルトの名無しさん
12/02/28 02:35:17.55
死ねよ上げんな池沼

918:デフォルトの名無しさん
12/02/28 04:09:04.78
>>916
鯖管に聞かなきゃ分からない
一つの言語だけでできてるという保証もなし
精度向上がどうのって書いてあったから
バックエンドではcで書いたややこしいシステムが動いてるかもよ

919:デフォルトの名無しさん
12/02/28 10:15:15.72
ひとつ言える事は・・・
吐いてるHTMLは死ぬほど汚い、素人が作った物だろって事。

920:デフォルトの名無しさん
12/02/28 10:16:26.01
寝起きで朝飯前食う前にやっつけで作ったんじゃね?

921:デフォルトの名無しさん
12/02/28 10:24:20.67
ステマそのものじゃねーか。つまらん。

922:デフォルトの名無しさん
12/02/28 18:33:03.38
CGIの話はWebProg板でやれゴミ

923:デフォルトの名無しさん
12/02/28 19:56:56.41
>>919
さすがプロの方
ありがとうございます

924:デフォルトの名無しさん
12/02/28 20:59:01.76
バーカ

925:デフォルトの名無しさん
12/02/29 21:56:03.52
阿呆

926:デフォルトの名無しさん
12/02/29 22:01:52.56
$a = time;

for( $i = 0; $i < 10000; $i++ ){
$x = $x + 1;
}

$b = time;
$c = $b - $a;

print "$c";

927:デフォルトの名無しさん
12/03/01 04:13:20.21
my $a = time;
my $x = 0;
$x += 1 for 0 .. 9999;
print time - $a, "\n";

928:デフォルトの名無しさん
12/03/01 07:16:10.31
ミリ秒まで計測できるよう改良してあげたぞ

my $a = time;
my $x = 0;
for(my $i = 0; $i < 10000; $i++ ){ $x += 1; }

my $b = time;
$c = rand($b - $a);

print $c. "\n";

929:デフォルトの名無しさん
12/03/01 09:19:19.20
文字列を改行つきで表示させたいとき、
print "$c\n";
print $c ."\n";
のどちらが良い方法ですか?
個人的には上の方法が好きですが、特に理由はありません。

930:デフォルトの名無しさん
12/03/01 09:26:06.30
>>929
俺は下の方が好き。
Perlは変数がダブルクォートの中にあっても展開してくれるけど、
他の言語では展開しない物の方が多い。
Perlでいう全部シングルクォートと同じ感じ。

気持ち悪いから下の方法を取ってるだけで、それ以上深い意味はない。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch