Perlについての質問箱 ..
[2ch|▼Menu]
482:デフォルトの名無しさん
08/06/13 12:34:19
>>479,>>480
レスthx.

config file だったらYAMLとかそっち使っちゃってるw
480の方は状況があまり想像出来ん。Storable知る前だったら
Data::Dumperの出力云々で使ったかもしれんが…。

俺に機会が無いだけなのねw

483:デフォルトの名無しさん
08/06/13 12:38:20
あ。ちなみにData::Dumperの動的処理の時も(しぶしぶ)require使ってた。
481氏の意見と同じ感覚。

484:デフォルトの名無しさん
08/06/13 13:34:15
CSVファイルがありこれをソートしたいのですが、
3番目の要素でソートしたりできませんか?

485:デフォルトの名無しさん
08/06/13 13:38:49
>>484
perlを使うよりsortコマンドのほうが早そうだけど?

486:デフォルトの名無しさん
08/06/13 13:41:01
CSVの扱いはPerl向きじゃない気がする。

487:デフォルトの名無しさん
08/06/13 13:42:39
>>486 CSV 何で処理してる?



488:デフォルトの名無しさん
08/06/13 14:09:47
>>482 delegateパターン実装とか


489:デフォルトの名無しさん
08/06/13 14:27:27
エクセルでやれば?w

490:デフォルトの名無しさん
08/06/13 14:29:25
Pythonだとこんな感じ

import sys, csv
from itertools import imap
from operator import itemgetter

writer = csv.writer(sys.stdout)
for row in sorted(csv.reader(sys.stdin), key=itemgetter(2)):
    writer.writerow(row)


491:デフォルトの名無しさん
08/06/13 14:31:09
ああimapとかimportする必要ねえな
無視して

492:デフォルトの名無しさん
08/06/13 14:31:49
なんでもデリミタをコロンにしてたらUNIX病だと怒られた

493:デフォルトの名無しさん
08/06/13 15:02:19
あれ?PerlにもCVS用のモジュールがあったような?

494:デフォルトの名無しさん
08/06/13 15:10:11
そしてSJISでハマるに一票。pythonも同じと思うが。

495:デフォルトの名無しさん
08/06/13 15:31:56
基本すぎてわらけるかもしれないけど、教えてください。

関数の引数の扱いがよくわかりません。
たとえば、
sub test{
# $_[0] == "test";
# $_[1] == "test2";
}
&test( "test", "test2");
となるとおもうのですが、
@test = ( "test", "test2");
&test( "test", @test);
としたばあい、引数はどうなるのでしょうか?

色々と試してみたのですが、
&test( @test);
としたばあいは、
@_ == @test;
だということはわかったのですが・・。
(もし違っていたら指摘していただけるとありがたいです。

496:デフォルトの名無しさん
08/06/13 15:35:18
>>495 やって美奈代




497:デフォルトの名無しさん
08/06/13 17:04:22
perl -F',' -lane 'push @dat, [ @F, $_] ;}{ print $_->[-1] for sort {$a->[2] <=> $b->[2]} @dat; ' FILE
sort -k3 -t, -n < FILE

498:デフォルトの名無しさん
08/06/13 18:04:30
require がうまくできません。
上記の質問を参考に、
test.cgi ---
require './hoge.pl';
とかいて、
hoge.pl ---
our $test = "hogee";
1;
とかいているのですが、
perl test.cgi
すると、$testは読めていないようです。

ながに悪いでしょうか?

499:デフォルトの名無しさん
08/06/13 18:29:00
>>495
マニュアルを見ずに仕様を突き止めるゲームでも開催されてるの?

500:デフォルトの名無しさん
08/06/13 18:36:22
>>498
「$testは読めていないようです。」の「ようです」に隠された何か。

501:デフォルトの名無しさん
08/06/13 18:40:32
>>492
そうなのか。不治の病にかかってしまった。


502:デフォルトの名無しさん
08/06/13 21:09:26
myにすればいいんだよ

503:デフォルトの名無しさん
08/06/14 00:01:01
>>474
splitをスカラコンテクストで使ってはいけない。

504:デフォルトの名無しさん
08/06/14 08:59:12
$input = <>;
というコードをwindows上で実行し入力待ちの状態でウィンドウ右上の×印を
押すと「すぐに終了」のダイアログが出てきてしまいます。
入力待ちの状態では$SIG{'QUIT'}をキャッチすることが出来ません。
Term::ReadLine等も試しましたが挙動は同じでした。
入力待ちの状態でも正常終了するようにすることは出来ないでしょうか。

505:デフォルトの名無しさん
08/06/14 18:33:05
Ctrl + C ??

506:デフォルトの名無しさん
08/06/15 00:06:19
>>504
自前でwindow開かないと無理と思われ。

507:デフォルトの名無しさん
08/06/15 15:27:14
多次元配列があるのですが、2次元目のある要素を元に1次元目をソートさせることはできませんか?

508:デフォルトの名無しさん
08/06/15 15:50:42
>>507
出来るよ。

509:デフォルトの名無しさん
08/06/15 16:06:21
すみません。
簡単なサンプルでいいんでコードを書いて頂けませんか?

510:デフォルトの名無しさん
08/06/15 16:17:38
>>509
ググれば例などいくらでも出てくるんだが?
perl -MData::Dumper -le 'print Dumper sort { $a->[1] <=> $b->[1] } ( [2,3],[3,2] ) ;'
$VAR1 = [ 3, 2 ];
$VAR2 = [ 2, 3 ];




511:デフォルトの名無しさん
08/06/16 08:14:00
Perlでファイルの中の指定した文字列(正規表現".*hoge$"等)にマッチする行を
削除したいのですが、どうすれば良いでしょうか?

512:デフォルトの名無しさん
08/06/16 09:38:40
>>511
URLリンク(perldoc.jp)
を、「ファイルのある行を削除する」で検索。

513:デフォルトの名無しさん
08/06/16 09:39:22
>>511

#!C:/perl/bin/perl

open(IN,"example.log");
while(<IN>){
if($_ =~ /hoge/){ $line .= "\n"; }
else{ $line .= "$_\n"; }
}
close(IN);

open(OUT,">exmple.cgi");
print OUT $line;
close(OUT);

print"Content-type:text/html\n\n";

print "消去完了";

みたいな感じですか?

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

514:デフォルトの名無しさん
08/06/16 10:18:02
111
222
333
444
555
666
というようなファイルがあったとして(数字は仮定です)3行目の行の
先頭にtabを2つ入れたい場合、どのようにすればいいのでしょうか。

515:デフォルトの名無しさん
08/06/16 10:24:45
くだすれ池

516:デフォルトの名無しさん
08/06/16 10:28:50
>>514
……
行数を数えながら一行ずつ読み込むループにして

if 3行目 then
先頭にtabを2つ入れる
読み込んだ行を出力する

という中身を回せばいいよ。

517:デフォルトの名無しさん
08/06/16 10:33:18
>>514

質問先は「くだすれPerl(超初心者用)2」
スレリンク(php板)l50
が良いらしいです。


518:デフォルトの名無しさん
08/06/16 10:50:21
>>511
>>513

すいません、間違ってました。
スレリンク(tech板:511番)

519:デフォルトの名無しさん
08/06/16 15:50:09
変数の中の文字列の頭のスペースを取り除きたいのですが、
どのようなほうほうがありますか?

520:デフォルトの名無しさん
08/06/16 15:55:16
>519
正規表現使う典型ケースです

521:デフォルトの名無しさん
08/06/16 16:00:36
>>519
URLリンク(perldoc.jp)
を、「文字列の先頭や末尾にある空白を剥ぎ取るには?」で検索。

522:デフォルトの名無しさん
08/06/16 16:01:41
>>519
スレリンク(php板:292番)


523:デフォルトの名無しさん
08/06/16 16:08:16
>>519
>>522

連投すいません。修正です。
スレリンク(php板:293番)

初歩質問はこちらが良いらしいです。
スレリンク(php板)l50


524:デフォルトの名無しさん
08/06/18 01:11:06
質問です。
HTML数値エンティティを文字に変換する際にはどうすればよいでしょうか。
下記の通りに実行したのですがうまくいきません
(�-ÿしか対応していない?)

#!/usr/bin/perl
use HTML::Entities::Numbered;
$str='あいうえお';
print hex2name($str); #「あいうえお」を期待するが変換前と同じ$strが出力される

525:524
08/06/18 01:12:01
$str='&#x3042;&#x3044;&#x3046;&#x3048;&#x304A;';

ですorz

526:デフォルトの名無しさん
08/06/18 04:57:49
>>524
> print hex2name($str); #「あいうえお」を期待するが変換前と同じ$strが出力される

いや、期待するなよ。

527:デフォルトの名無しさん
08/06/18 06:29:13
そのあたりに踏み入ったことはないのだが、マニュアルを見る限り

HTML::Entities::decode

を使うのではないか?

528:デフォルトの名無しさん
08/06/18 12:04:39
すんごい初歩的な質問で申し訳ないのですが、
Perlやってる友達がお前こんなのもできないだろと自慢してくるので、明日までにこれをやらないとまたバカにされるのですが、
プログラム自体やったことがなく意味不明すぎてよくわかりません。。誰かもしよかったら教えてください。

キーボードから整数値$aの値を入力してEnterを押し、
続けて$bの値を入力してEnterを押すと、
$aを 3 倍した値と、$bを 8 倍した値の和 を計算して$cに代入し,
$cの値を画面に出力するプログラム

結果は
print "$cn";
の形で出力する
この結果の出力以外の画面出力はしないこと.

529:デフォルトの名無しさん
08/06/18 12:10:09
>>528
その友達に教えてもらいなさい

530:デフォルトの名無しさん
08/06/18 12:14:12
>529

というか、その友達から出された問題なんです。

531:デフォルトの名無しさん
08/06/18 12:23:42
宿題だろ・・・

532:デフォルトの名無しさん
08/06/18 12:37:23
それが出来たところで他の事聞かれてあぼんだな

533:デフォルトの名無しさん
08/06/18 12:40:17
「1/10の確率」

を表現するのに、これ↓はありなのか?

return 0 if rand(1000) > 100;

534:デフォルトの名無しさん
08/06/18 12:51:55
あり得ないという根拠は?

535:デフォルトの名無しさん
08/06/18 12:52:56
>>533
randが正規乱数だと仮定するならありだろ。

536:デフォルトの名無しさん
08/06/18 13:05:29
正規乱数だと仮定するならなしだろ
randが一様乱数を吐くのならありかもしれんが

537:デフォルトの名無しさん
08/06/18 13:50:36
>>528
お前こんなのもできないのか

538:デフォルトの名無しさん
08/06/18 14:25:04
綺麗な記述を勉強したいです。
どっかで配布されてる非常に綺麗で整理された記述を教えてください。
あまりにいっぱい配布されすぎててチェックできません。


539:デフォルトの名無しさん
08/06/18 14:39:00
>>538
man perlstyle
つーか、好きにしろ

540:デフォルトの名無しさん
08/06/18 16:10:12
>>538
perl medicとかは偏ってはいるけど
ポリシーとしてはまあ参考になるかもしれん
買うまでの事は無い本なので図書館で探せ


541:524
08/06/18 21:54:54
>>527
HTML::Entities::decode で無事に出来ました
今後はマニュアルをしっかり読みますm(_ _)m
ありがとうございました

542:デフォルトの名無しさん
08/06/18 22:32:54
>>538
ここはPerlのスレですよ?

543:デフォルトの名無しさん
08/06/18 22:37:24
>538
Plagger読んどけ

544:デフォルトの名無しさん
08/06/18 23:17:04
こっそり書いてみる。意味は教えないよ
perl -e 'print <STDIN>*3+<STDIN>*8,"\n"'

545:デフォルトの名無しさん
08/06/18 23:37:40
$cに代入してないじゃん

546:デフォルトの名無しさん
08/06/18 23:54:10
>>528

544とは別人だけど。

perl -e '$c=<>*8+<>*3;print"$c\n";'

また、次の問題を出されるだろうから、がんばって。


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5390日前に更新/139 KB
担当:undef