1 :
デフォルトの名無しさん :
2012/01/18(水) 02:58:16.13
2 :
デフォルトの名無しさん :2012/01/18(水) 02:58:43.37
3 :
デフォルトの名無しさん :2012/01/18(水) 02:59:04.49
4 :
デフォルトの名無しさん :2012/01/18(水) 02:59:23.08
# [Perl 日本語処理の基礎の基礎] # このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。 # このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。 # 入出力ともシフト JIS 形式のファイルまたは DOS 窓を想定しています。 # まず、以下の行を先頭に入れて下さい。 use utf8; use open IO => ":encoding(cp932)"; binmode STDIN => ":encoding(cp932)"; binmode STDOUT => ":encoding(cp932)"; binmode STDERR => ":encoding(cp932)"; # ※1 use Encode; # 次に、あなたが実行したい処理の内容を入れて下さい。 $file = 'C:/なんたら/かんたら.txt'; open my $fh, '<', encode("cp932", $file) or die $! ; # ※2 print <$fh>; # 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう # おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。 # 【注】※1. の行を入れると、DOS 窓への日本語出力は簡便になりますが、 # ソースファイル名に非 ANSI 文字が含まれる場合に die 文の出力が失敗します。 # ※2. OS に渡す文字列(ファイル名,dos コマンドのオプションなど)は、 # この例のように cp932 でエンコードする必要があります。
5 :
デフォルトの名無しさん :2012/01/18(水) 02:59:49.36
6 :
デフォルトの名無しさん :2012/01/18(水) 07:56:08.27
DBIを使ってMySQLなどのデータベースを扱う時に、 データベースへ送るSQL文はutf8へエンコードした方が良いのでしょうか? $dbh->do(encode_utf8("UPDATE table SET name = 'てすと〜〜〜'")); このように書いても、また、encode_utf8を抜いて書いても、 どちらで試してもエラーは出ず、文字化けするような事もありませんでした・・・ 不要ならオーバーヘッドが起きるのでencode_utf8せず処理したいのですが、 一応utf8へエンコードしておいた方がよいでしょうか・・・?
>>4 前に書いたけれど、
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
は実際には
use open qw(:encoding(cp932) :std);
で充分じゃないの?
>>6 DBI は Perl のエンコードのことは考えずに、SET NAMES で指定したエンコー
ディングで文字列がエンコードされているものとみなすので、UTF-8 なら引数
を encode しようがしまいが関係なしのはず。
select で返ってきた値は decode しないとその後の処理でおかしくなる可能性
が高い。
9 :
デフォルトの名無しさん :2012/01/18(水) 09:38:05.76
>>8 教えてくれてありがとうございます。
わかりました、selectで取得する時だけdecodeするようにします。
何度も申し訳ないですが、もう一つ質問させてください。
オブジェクトを作って、インスタンス化し、
そのメソッド名を変数で指定する事は可能でしょうか?
input1、input2、input3 というメソッドがある場合、
my $obj = MyObject->new();
@list = (input1, input2, input3);
for my $m (@list) {
$obj->$m("代入");
}
雰囲気的にはこんな感じで処理したいのですが・・・
もちろん、これではエラーが出てうまく動きませんでした。
どうすればうまく動いてくれるでしょうか・・・
>>10 教えていただきありがとうございました。
可能だと言われ、見なおした所・・・
配列に入れてたメソッド名をタイプミスしてました・・・
助かりました、ありがとうございました。
12 :
デフォルトの名無しさん :2012/01/18(水) 11:17:21.10
コマンドプロンプトでperlを実行するにはどうしたらいいんですか? コマンドプロンプトウィンドウにソースコードファイルをドラッグしてエンター押しても ファイルが開くだけでした。 今まではBJDなどの簡易サーバーでブラウザで実行結果表示していたからやり方わからないです
perl perlscript.pl
15 :
デフォルトの名無しさん :2012/01/18(水) 20:17:30.94
>>12 コマンドプロンプトの扱い方から勉強しなおせよ糞
コマンドプロンプトの使い方知ってたらファイルドラッグとかするわけないだろ
Perl以前の質問をPerlスレでするとか荒らし?
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
>>7 use open qw(:encoding(cp932) :std);
だと単語数が多い割にはドキュメント性が低くて、何を cp932 と
するのか分かりにくいのが難点。せめて :std がデフォルトになっ
ていて、省略できればよかったのに。
18 :
デフォルトの名無しさん :2012/01/19(木) 04:12:48.44
はいはいそうだね
19 :
デフォルトの名無しさん :2012/01/19(木) 18:11:56.44
open(OUT,">test.dat"); close(OUT); このように空のファイルを作ったときエディタを開くと文字コードがshift-jisになっています。 エディタのステータスバーの右下のところがsjisになってます。 空のファイルでもEUCかUTF-8形式にしたいです。 どうすれば文字コードを指定してファイルの作成ができるのですか?
>>19 エディタのデフォルト設定の問題ですよね。
ここまでのアフォがいるとはさすがに思わなんだ…… ゆとりとかそういうレヴェルを遥かに超越したとんでもないks・kzだ お前にゃあプログrマイング一切は向いていない
なるほど、それであれほど言われてもSHFT-JISに固執してたのか 謎が解けたよ ぶっちゃけ君にパソコンは無理 いや、煽りとかそんなんじゃなくて、真面目な話で
>>21 >お前にゃあプログrマイング一切は向いていない
文法エラー
24 :
デフォルトの名無しさん :2012/01/19(木) 21:28:34.09
25 :
デフォルトの名無しさん :2012/01/19(木) 22:07:38.62
Net::Twiterとかそのあたりで、TwitterのURLから書き込み内容とかのデータを取得するAPIってないかな。 CPANのドキュメント漁ってるけど見つからない・・・俺が節穴なのかな。
> Twiter たぶんfusianaなんだろうなー > TwitterのURLから書き込み内容とか こっちのつづりは合ってるのにな―
28 :
デフォルトの名無しさん :2012/01/19(木) 22:20:10.49
節穴とゴミしかいないスレwwwwww
29 :
デフォルトの名無しさん :2012/01/19(木) 22:21:29.66
>>26 そう。やっぱりあるよな。俺が節穴すぎるのか。
見なおしてくる。
ゴッミでぇーーーすッ!!!!
31 :
デフォルトの名無しさん :2012/01/19(木) 22:24:45.73
ゴミはゴミ箱へ
スレ違いの質問にはスルーか、速やかな誘導をお願いします。 と言いましたが、アフォなので誘導は不要です。単にスルーでお願いします。
33 :
デフォルトの名無しさん :2012/01/19(木) 22:49:19.95
ああ見つかった。俺節穴だな・・・。
34 :
デフォルトの名無しさん :2012/01/19(木) 23:17:51.29
chinge
and Aska
37 :
デフォルトの名無しさん :2012/01/19(木) 23:45:58.11
うるさいゴミ
38 :
デフォルトの名無しさん :2012/01/20(金) 01:50:05.47
39 :
デフォルトの名無しさん :2012/01/20(金) 02:11:40.81
hoge.plがおいてあるフォルダにあるテキストファイル名を 取り込みリストに格納したいのですがどうしたらできますか?
40 :
デフォルトの名無しさん :2012/01/20(金) 02:13:26.80
要するに ls *.txt の結果を受け取りリストに格納したいのです
opendir(my $dh, './') or die $!; my @list = grep(/\.txt/ ,readdir($dh)); closedir($dh);
あ、plおいてあるとこるか './ 'をdirname($0)に変更かな use File::basenameしといて
43 :
デフォルトの名無しさん :2012/01/20(金) 12:47:09.53
>>22 PCインストラクター、SE、PGもやってきているのでパソコンが無理ってことはないです
パソコンは会社で一番できるし、上司よりもできるのでパソコンは得意です
44 :
デフォルトの名無しさん :2012/01/20(金) 12:48:18.90
perlで2次元配列を使うにはどうすればいいのか教えてください
46 :
デフォルトの名無しさん :2012/01/20(金) 13:16:36.03
>>43 そのパソコン大先生が何でこんなスレで質問なんかしてるの?
50 :
デフォルトの名無しさん :2012/01/20(金) 16:56:05.01
>>42 こうなったんですが・・・
ちなみにperl hoge.plはエラーはないものの正しく動作しません
$ cpan -i File::Basename
CPAN: Storable loaded ok (v2.20)
Going to read '/home/****/.cpan/Metadata'
Database was generated on Fri, 20 Jan 2012 05:11:07 GMT
Running install for module 'File::Basename'
CPAN: YAML loaded ok (v0.71)
The most recent version "2.83" of the module "File::Basename"
is part of the perl-5.15.4 distribution. To install that, you need to run
force install File::Basename --or--
install F/FL/FLORA/perl-5.15.4.tar.gz
CPAN: Time::HiRes loaded ok (v1.9719)
Running make test
Can't test without successful make
Running make install
Make had returned bad status, install seems impossible
52 :
デフォルトの名無しさん :2012/01/20(金) 18:28:25.53
↑クソワロタwwwwwwwww
>>51 perl v5.10.1 だったのですができました。
ありがとうございます。
失敗してた理由はいまから調査します。
>>53 >>50 >>40 >>39 ですが
ただしく作動しなかった理由がわかりました。
デバッグしてる時の話ですが
ある場所で処理を止めたいので
sleep(100);
を挟んでいました。sleepはちゃんと止めたい場所の下に入れてたのですが
どうも出力が遅れる事が多いのです。
なぜだかわかりません。環境はcygwinです。
<>;で止めるほうがいいのでしょうか?
$ uname -r
1.7.9(0.237/5/3)
$ perl -v
This is perl, v5.10.1 (*) built for i686-cygwin-thread-multi-64int
(略)
>>44 ものぐさなPerlの世界へようこそ。
他のスクリプト言語に慣れているのならperlrefとperlvarを一読することをお勧めします。
Perlでは配列をネストしようとするとすべてペッタンコに並列化してしまいます。
my @aa = ('foo', 'bar');
my @ab = ('hoge', 'fuga');
my @ac = (@aa, @ab); # => ('foo', 'bar', 'hoge', 'fuga')
$ac[2]; #=> 'hoge'
二次元配列を扱う場合はリファレンスを使って下さい。
my @ac = (\@aa, \@ab); # => (['foo', 'bar'], ['hoge', 'fuga'])
$ac[1]->[0]; #=>'hoge'
並列化する意図がなければ、配列を全てリファレンスとして扱う方が分かりやすいかもしれません。
my $aa = ['foo', 'bar'];
my $ab = ['hoge', 'fuga'];
my $ac = [$aa, $ab];
$ac->[1]->[0]; # => 'hoge', これは次のように省略できます。
$ac->[1][0];
次は一時変数の時にお会いしましょう。ごきげんよう。
>>56 デバッガーがある事を知りませんでした。
使ってみます。
ありがとうございました
Perlの基本はあらかたわかったけどどういう時にどういうモジュール使えば良いのかよくわからんな これは自分で調べながら経験を積むしか無いのか
59 :
デフォルトの名無しさん :2012/01/21(土) 01:05:01.17
モジュール探すのは時間がかかるし解説サイトが英語ばかりだから ちょっとしたものは自分で作る方が早いよ なんでもかんでもモジュールに頼るとプログラミング力が養われない
>>59 LWPなしにネット関係の処理すると思うとぞっとします。
>>59 こういうこと言う奴が既存のモジュールよりもいい物を作れたためしがない
62 :
デフォルトの名無しさん :2012/01/21(土) 02:02:55.88
難しい理由の一つに英語を挙げるヴァカがいるのはこのスレですか? 自分の頭の悪さではなく言語を言い訳にするとかガチ池沼w さっさと回線切ればいいのにwww
いまさらplaggerをlinuxにインストールしようとしてるんだけど、 今はもうできないの? CPANから全然入らない。
64 :
デフォルトの名無しさん :2012/01/21(土) 03:58:50.99
ソース落としてきてコンパイルすればすむ話だろ
>>63 自分はcpanmでできました。
どうしてもだめならテストかっとばしたらどうでしょう。
>>56 何も環境を用意しなくても、-d を指定するだけで使える便利さ。
それに比べてPHPときたら…
67 :
デフォルトの名無しさん :2012/01/21(土) 11:33:14.02
PHP使ってる奴は情弱 脳に問題あるのかと思うくらい情弱
69 :
デフォルトの名無しさん :2012/01/22(日) 12:28:25.82
UTF8にしたのに文字列の中でユニコードの特殊文字が使えません。 例えば○の中にRが入っている文字®という文字を文字列の中に入れたいんですが この文字列をエディタにコピペするとただのRになってしまいます。 $str = "あああ®www";というようにしたいのですがうまくいきません。 UTF8ではユニコード文字が使えるんじゃなかったのですか?
UTF8が使えるエディタに変更してください。 Perlとは全く無関係の話です。
71 :
デフォルトの名無しさん :2012/01/22(日) 15:14:56.72
72 :
デフォルトの名無しさん :2012/01/22(日) 18:08:49.84
いいだろカス
病的折衷主義のガラクタ出力装置から出てくるのはやっぱりゴミカスか
だったらPython使えよ 外人が作ってて書き方は一つしかないきっちりしたPythonを!
> 外人が作ってて お前はゴミカス同様に欧米コンプとかあんのか? アフォじゃねーの? 何人が作ろうと関係ないじゃんか これだから低能のksは困る 巣に引っ込んでろgm
76 :
デフォルトの名無しさん :2012/01/22(日) 20:00:47.37
突っ込むようなところじゃないのに突っ込んでファビョってるヴァカは可哀想としか言いようがない
>>75 >何人が作ろうと関係ないじゃんか
ところが関係あるんだなぁこれが。
特にRubyが嫌いでPythonに定着した人たちにとっては。
>>77 もしかするとお前はスレタイも読めないのか?
本当に日本人なのか?
それ以前にアルファベット読めるのか?
ここはperlのスレだぞ?
Rubyの何かと勘違いしていないか?
外人が作ったから良いんだみたいなksなオナニーショーはRubyスレでやってろgomi
あとどこら辺に国民性が出てるのか言えるんだろ?
言ってみろよkz
まあお前は低能の肥溜めのハエ以下の蛆だからぁ
何も語れずにクソひり出して大人しく墓穴に入ってりゃあいいさ
お手本になる、小さくまとまってて綺麗なPerlモジュールってCPANで言うとどれ? 玉石混交とはよく聞くけど、何が「玉」で何が「石」か判断つかない。 お勧めあったら教えて。
80 :
デフォルトの名無しさん :2012/01/22(日) 23:44:10.02
うるさいゴミ
82 :
デフォルトの名無しさん :2012/01/23(月) 17:51:18.91
ファイルを開くときの例外処理って必ずする必要があるのですか? このようにファイルを開けなかった場合はデフォルト値にしたい場合 例外処理するとopenでプログラムが終了されて、デフォルト値にすることができないのでこのようにするしかないんですが @default_hobby_list=("ゲーム","アニメ","PC"); open(IN,"hobby.dat"); @hobby_list = <IN>; close(IN); #@hobby_listが取得できなかった場合 if(@hobby_list==0){ @hobby_list = @default_hobby_list; }
例外処理って何のこと? 普通にこんなのじゃいけないの? if (open my $f, 'filename') { なんか処理; close $f; } else { デフォルト処理; }
>>82 それだと読み込んでも配列がゼロ行なら処理しちゃうよ。
それでも良いなら良いけどね。
あと、例外処理って"or die"のことか?
別にdieじゃなくても
$operror = 0;
open(IN,"hobby.dat") || $operror = 1;
とかできるぞ。
例外処理は必須じゃなくてアプリケーションのポリシーによるのだけど、
open が失敗するのはファイルが存在しない場合だけじゃないので、
ファイルの存在確認をしたいだけならファイルテスト演算子を使うべきだし、
open についても die じゃなくてもせめて warn $! ぐらいはしといたほうが、いざ想定外が起こったときにも原因究明に時間かけなくて済むよ。
#
>>85 - for popup
use strict;
use warnings;
my $filename = './hobby.dat';
my @default_hobby_list = ("ゲーム", "アニメ", "PC");
my @hobby_list;
if (-f $filename && -r _) {
open my $in, '<', $filename or die "cannot open: $!";
@hobby_list = <$in>;
close $in or die "cannot close: $!";
}
if (@hobby_list) {
chomp @hobby_list;
} else {
# file not found or empty
@hobby_list = @default_hobby_list;
}
あ、最後のif-elseのifのほう無駄だな。最初のifに含めればいいだけだ。
>>84 > open(IN,"hobby.dat") || $operror = 1;
|| の方が = より優先順位が高いので compilation error になる。
88 :
デフォルトの名無しさん :2012/01/23(月) 21:51:24.57
行の末端から読んでソートするにはどうすればいいですか? ?かすでいいばれすうどはにるすトーソでん読らか端末の行 (例) yahoo apple google goo banana ↓ banana google apple goo yahoo -- 入出力は何でもいいです。
宿題みたいだなー。答えたくないなー。
91 :
デフォルトの名無しさん :2012/01/24(火) 03:29:33.24
Twitterは32分で返信きてた
このスレのハゲは本当に無能ばかりだな
>>89 問題外
分からないならレスするなカス
>>90 遅い
URL貼るだけに何分かかってんだよ
じゃあこんな所じゃなくてトゥイッタァーでやればよくね?
93 :
88 :2012/01/24(火) 03:37:43.23
94 :
88 :2012/01/24(火) 03:38:44.21
早い話がリモートホストの集計がしたいのですが どうやったらいいのでしょうか? 逆順ソートすればいいのかと思ってるのですが
リモートホストの集計と逆順への並べ替えの関係がよくわからんのだが これじゃだめなのかい while (<>) {unshift @data, $_}
>>94 >>88 のままでいいなら
>>90 の関数を使って
print map reverse . "\n", sort map scalar reverse, qw(
apple.com
example.jp example.net example.org
goo.ne.jp
google.com google.co.jp
namco.jp namco.co.jp
yahoo.com yahoo.co.jp
apple.com
);
TLD・ドメイン名・ホスト名を区別して揃えてくれるソートルーチンが欲しいなら
既存のアクセス解析ツールのコードをあたってもらった方が早いし、
ここでダラダラ再発明されても困る。
97 :
デフォルトの名無しさん :2012/01/24(火) 17:38:29.94
クソスレわらた
↑頭悪そう、PHP厨か?w
100 :
デフォルトの名無しさん :2012/01/24(火) 17:59:28.47
最強の言語はPHPでしょ Perl(笑)とかw
>>100 コマンドラインから実行でも<>が無いと何にもできない最強言語乙。
102 :
デフォルトの名無しさん :2012/01/24(火) 18:04:13.29
うるさいゴミ
PHP<?笑?>
105 :
デフォルトの名無しさん :2012/01/24(火) 19:14:07.96
PHP厨≦PHP<ゴミ
106 :
デフォルトの名無しさん :2012/01/24(火) 22:06:37.84
use strict;使わない奴は基地害
必要なときにPerl4使えない奴は単なる無能
C風のスタイルしか受け入れない奴も基地外 Perlやるならnext ifぐらい理解しやがれ脳弱
つまりstrictとかないphpが最も優れた言語。
>>110 PHPが優れているのは正しいが
それはstrictがあるからだ。
言語仕様が全体で一貫している言語が必ずしも優れているとは限らない PHPはそれを教えてくれる
PerlとPHPを比較する人は無能。 ついでにその人はプログラマでもない。
>>113 説得力のある理由を言えなければ
お前が無能ってことでw
つまりFORTHが最強ってこと?
このスレに来てるだけですでに・・・
117 :
デフォルトの名無しさん :2012/01/25(水) 01:52:31.34
ゴミは書き込むなって
>>114 君がプログラマじゃないから。説得力あるだろ。
そもそもそんな理由聞いてる時点でな……
ま、学生のスレだな。
119 :
デフォルトの名無しさん :2012/01/25(水) 02:07:33.90
要はPHPはPerlの比較対象ではないということだ。 Perl=プログラミング言語 PHP=産廃 言い方を変えれば、 カレーとうんこを比較する人は低能。 ついでにその人は料理人でもない。
な。すぐ二つ並べて比べて下らないこと書きたがるだろ。
php厨は失せろよ・・・
122 :
デフォルトの名無しさん :2012/01/25(水) 02:36:33.52
>>118 が説明能力なさすぎてワロタwwwwwwwww
説明できずに恥さらすだけならレスしなきゃいいのにwwwwwwwwwwwwww
いちいち具体的に書くメリットなかったのよ。数年ぶりに来ただけだしね。 別に恥じゃないよ。正直どうでもいい。 ただプログラマが減ってるのは残念かな。
>>108 if (open(IN, "abc") == 0) {
die("なんたら");
}
とかも勘弁してほしいw
126 :
デフォルトの名無しさん :2012/01/25(水) 10:06:30.98
嫌ならPerl使うなよゴミ
>>126 Perlスタイルも理解できないお前が言うことかよ脳弱
128 :
デフォルトの名無しさん :2012/01/25(水) 12:14:44.28
昨日から沸いてる>127みたいな基地害はなんなの?
>>128 荒らしたいだけの脳弱だから放置しろ
お前みたいなヴァカが相手するから住み着くんだろ
>>124 自分にとって自己紹介だから他人も自己紹介してると思ったのか。
C程度で挫折するとかかわいそう。
ゆとりっていいね
2chは4,5人で徒党を組まれて荒らされると打つ手無しだからな。 どうにもならんわ。
仮にID出すようにしたって、何の役にも立たんしな ここに来るような奴なら、IDなんていくらでも変え放題
> C程度で挫折するとかかわいそう。 同じことを何度も言うとは、よっぽど嫌な思い出があるんだろうな
135 :
デフォルトの名無しさん :2012/01/25(水) 14:45:19.58
たった2回で何度もとか言い出すとかよっぽどトラウマあるんじゃねw
くだらないレスしてるならsageろ。
> 荒らすなよゴミ
> 嫌ならPerl使うなよゴミ
> ゴミは書き込むなって
> PHP厨≦PHP<ゴミ
> うるさいゴミ
>
>>100 =ゴミ
> 失せろゴミ
> うるさいゴミ
139 :
デフォルトの名無しさん :2012/01/25(水) 15:17:23.65
1 :デフォルトの名無しさん:2011/12/18(日) 17:23:47.01 やはりPHP書きよりPerl書きの方が頼りにされていた日立製くん所との案件で おれはコーディング開始時期に遅れてしまったんだがちょうど書きはじめたみたいでなんとか耐えているみたいだった おれは別派遣先にいたので急いだところがアワレにもPHP書きがくずれそうになっているっぽいのがメール会話で叫んでいた どうやらPHP書きがたよりないらしく「はやくきて〜はやくきて〜」と泣き叫んでいるコーダーのために俺は契約解除を使って普通ならまだ付かない時間できょうきょ参戦すると 「もうついたのか!」「はやい!」「きた!Perlきた!」「メインPerl書ききた!」「これで勝つる!」と大歓迎状態だったPHPはアワレにもコーダーの役目を果たせず泣いていた近くですばやくPerlを書いてコーディングした PHP書きから裏メールで「勝ったと思うなよ・・・」ときたが開発メンバーがどっちの見方だかは一瞬でわからないみたいだった 「もう勝負ついてるから」というと黙ったので日立プロパーのJava書きの後ろに回り、モジュールのテストをして何週間かしてたらサーバーサイドのコーディングは終わった 「Perl書きのおかげだ」「助かった、終わったと思ったよ」とPHP書きを行き帰らせるのも忘れてメンバーがおれのまわりに集まってきた忘れられてるPHP書きがかわいそうだった 普通なら裏メールのことで無視する人がぜいいんだろうがおれは無視できなかったみんなとよrこびほめられたかったので打ち上げ飲み回に誘ってやったらそうとう自分の裏メールが恥ずかしかったのか自社に帰って行った
何かの言語が使えるのにそれ以外の 言語で躓づくとか普通ならあんまり無いけどな・・・
こんにちは。Perl初心者です。 下記は、入門書によくあるカウンターのお決まりの一文らしいのですが、 open(DAT, "+< $datfile"); flock(DAT, 2); $data = <DAT> +1; <DAT>の意味が理解出来ません。 <>の意味はなんですか? なんで<>を付けるのか分かりません。 本には、その事は一切スルーされているのですが、 何故HTMLでも無いのに<>で囲う必要があるのかが、分かりません。 ご教授宜しくお願いします。
142 :
デフォルトの名無しさん :2012/01/25(水) 15:50:10.01
>>141 >ご教授宜しく
意味不明。
日本語もまともに使えない池沼がプログラム?
初心者って付ければ免罪符になると思ってるヴァカは帰ってね
誰か情報乞食の>141に教えてやれよ
そんなことも自分で調べられない>>141は この高度情報化社会には不要
春厨かな
>>142 「質問に答えるスキルはないので、取りあえずそこを突っ込んでみました」
ってかw
これも同じ春厨 76 :デフォルトの名無しさん :2012/01/22(日) 20:00:47.37 突っ込むようなところじゃないのに突っ込んでファビョってるヴァカは可哀想としか言いようがない 129 :デフォルトの名無しさん :sage :2012/01/25(水) 12:24:21.83 荒らしたいだけの脳弱だから放置しろ お前みたいなヴァカが相手するから住み着くんだろ 143 :デフォルトの名無しさん :sage :2012/01/25(水) 15:56:07.35 初心者って付ければ免罪符になると思ってるヴァカは帰ってね
可哀想な奴の多いすれ
151 :
デフォルトの名無しさん :2012/01/25(水) 17:23:10.88
ニートじゃねぇよ 一般企業は5時に終業だって知ってる?
※※※※お知らせ※※※※ 必要な情報も出たので 叩かれてキレた141が暴れております
>>152 まともな企業なら、就業時間外だろうが自分の携帯からだろうが
会社で2ch禁止 って知ってる?
>>153 本当にゴミはゴミみたいな書き込みしかできないんだな。
今日は大繁盛だな。
17:02だからもう会社から出てるかもしれなくね?
17時終業だからって17時に帰れる会社なんてあるわけないだろwww 普通は終電間際にならないと帰れないのが普通wwww
159 :
デフォルトの名無しさん :2012/01/25(水) 17:46:40.65
うちは2chでもTwitterでも短時間ならおkって言われてる
ニコニコニュース+α 「韓国『金正日萌え』ツイート逮捕事件」
http://live.nicovideo.jp/watch/lv78963873 【会場のご案内】
2012/01/26(木) 開場:20:50 開演:21:00
反国家的ツイートにご用心?!
この事件から見える韓国社会の姿とは?
23日に配信されたニコニコニュースの記事が、
ネット上で大きな反響を呼んでいます。
その記事とは、
韓国で「金正日萌え」とツイートした24歳のパク・ジョングンさんが、
同国の国家保安法違反で逮捕されたことを報じたもの。
コメントは2000件以上、まとめサイトにも多数転載されました。
記事:『韓国で「金正日萌え」とツイートした青年が逮捕される』(2012年1月23日)
今回、ニコニコ生放送では、逮捕されたパクさんの友人で、
立教大学の留学生でもあるキム・ソンハさんに詳しくお話を伺います。キムさんは、
国家保安法など韓国の社会システムに関心があり、研究・執筆活動をしています。
また、パクさんを自身のウェブマガジンの連載で逮捕前から取り上げるなど、
今もっともパクさんを知る人物でもあります。
国家保安法とはどういう法律なのか?
韓国ではどう受け止められているのか?
イ・ミョンバク政権が韓国の若者に不人気な理由とは?
韓国で沸き起こるデモの話や韓国社会の問題点について、
キムさんというひとりの若者の視点から語ってもらいます。
聞き手は、数々の公安事件や経済事件の取材に携わり、
元共同通信社記者でソウル特派員も務めたジャーナリストの青木理氏。
「たった80人で"欧州でも大人気"?」K-POPのブーム捏造に韓国本土からも批判噴出中
またぞろ、韓国メディアによるK-POPブームのゴリ押しが露見した。
韓国が欧州の若者1,208人を対象に行った「韓流および国家ブランド調査」で、韓国と聞いて思い浮かぶイメージの2位が「K-POP」だったというのだ。
この結果にネット掲示板などでは「日本でも作られた人気なのに、欧州で人気なんかあるはずがない。」などとブーイングが殺到している。
「実は、このデモも韓国側のヤラセ説が根強いんです。デモの様子が動画サイトのYouTubeにアップされているのですが、
これを見ると韓国人スタッフらが集まった現地の少数のファンたちにデモの動きを指示していることが分かります。
実際、パリやロンドンの大手CDショップに行ってもK-POPアーティストのCDなんて置いていない」
(韓国のエンタメ事情に詳しい音楽ライター)
http://www.cyzo.com/2012/01/post_9671.html
163 :
デフォルトの名無しさん :2012/01/25(水) 19:34:39.29
Kポップなんか流行るわけないだろ 俺の周りには聴いてる奴一人もいないぞ
俺の周りには 一人もいないぞ
166 :
デフォルトの名無しさん :2012/01/25(水) 21:06:39.77
なんでネトウヨがコピペしてんだ クソスレだけにしとけって
>>145 神様
返事が遅れて申し訳ありません。”○┐
調べるのに相当時間が掛かりましたが、本当にありがとうございました。
そのHPのリンク先に、私が求めていた答えがズバリありました!
<FILEHANDLE> は readline(*FILEHANDLE) とも書けます。
なるほど・・・前者の方が短くてスマートな命令文ですね。
しかし、初めてPerlを始めようとする私には不思議なタグに感じられて困惑してました。
的確な御指導ありがとうございました。
168 :
デフォルトの名無しさん :2012/01/25(水) 22:26:27.20
低能ほど長文を残していく良い例 初めてとか感じられたとか、ここはいつからお前の感想を書く場所になったんだ?
質問するだけして無言で去るよりはマシ
>>167 まず、適当な入門書を通読しろよ。
んな、英語で言えば「is」って何ですか?みたいなレベルのことがいちいち訳分からん状態じゃ
あまりに非効率だ。
質問の仕方からして根本的に頭悪いんだから長文くらい許してやれ。
>>170 それができない程ゴミだからこのスレできいてんだろw
回答者のことをおだてればパシられてくれる
人力検索くらいにしか思ってないぞww
そうじゃなきゃURL一つ貼った奴に
「神様」とかおちょくった呼び方しないってwww
>>170 学習姿勢のない池沼には何言っても無駄。
174 :
デフォルトの名無しさん :2012/01/25(水) 23:14:31.92
知恵遅れの小学生を捕まえて、いい大人がよってたかってフルボッコ 恥ずかしくないのかね 明らかにおかしいんだからスルーすればいいのに
知恵遅れの小学生をいじめるのはたいがい小学生だろう
ここよりWebProg板の質問スレのほうが親切
しかしWebProg板で高級シェルスクリプトの話は出来んのよね
178 :
デフォルトの名無しさん :2012/01/26(木) 10:20:36.14
WebProgは馬鹿にこき使われるのが好きなMが多いからな
AWKで言うFNRってどうすればいい? NRは$.があるけど…
180 :
デフォルトの名無しさん :2012/01/26(木) 13:30:41.42
ステマ
>>181 なるほど…
・PerlでEOFを意識したことがなかった
・$.を書き換えるという発想がなかった
ので、ちょっとビックリした。
他にはeof検出時の$.を保存して
差分を出すとか色々やり方ありそうだ、thx
184 :
デフォルトの名無しさん :2012/01/26(木) 18:53:36.68
うるさいゴミ
185 :
デフォルトの名無しさん :2012/01/26(木) 21:27:03.50
誰かdankogai黙らせてください いつまでjcode.pm振りかざすんですか
dankogaiの作った Perl標準のEncodeモジュールを 使いましょうねw
断固、害。
190 :
デフォルトの名無しさん :2012/01/27(金) 00:05:26.04
くそすれ
use strict; use Encode;
(アマチュア、または初心者の場合) use strict; use Jcode;
(アフォの場合) use stricts ; use warning ;
194 :
デフォルトの名無しさん :2012/01/27(金) 03:46:17.41
へぇ
(俺の場合) use struct; 「あっ」
197 :
デフォルトの名無しさん :2012/01/27(金) 11:16:29.42
Perlはレガシー
>>197 さんざんてめーでレガシーな書き方しといてその開き直りか
(お前の場合) use homo; 「アッー!」
201 :
デフォルトの名無しさん :2012/01/27(金) 20:58:05.36
破廉恥
モダンがモダンでないように、レガシーもレガシーじゃないんだよね 言葉は変化するというけれどこれはただの誤用だよね 意図的かもしれないからその手には乗らないけどね
203 :
デフォルトの名無しさん :2012/01/28(土) 04:26:30.31
207 :
デフォルトの名無しさん :2012/01/28(土) 10:53:37.80
引数の0と何も引数がないのをうまく区別する方法はないでしょうか? 例えば、program 0なら引数の0を使って処理をしてprogramだけだとエラーを表示するようにしたいのです。 if(!ARGV[0])だと引数に0を入れてもエラー処理に行っちゃうので・・
どんな言語でもそうだが、 if ( ここ ) {} に入れるものは、bool型かオブジェクト(参照型)だけ。 数値型や文字型なんかを入れたらいかん。 perlで言えば、オブジェクトでないのなら 必ず、”ここ” で比較しろ。
つまりどういうことなんですか!
defined
if (@ARGV)
if(%HASH) なんでこれやったらおかしい動きするわけ?
え?空のハッシュなんだから 空の配列と同じく偽になるべきでしょう?
>>214 お前には聞いてないから黙っとけやゴミ。
217 :
デフォルトの名無しさん :2012/01/28(土) 11:46:31.13
>214←はい、今日の歩く恥さらし1匹目はいりましたー
煽ってる
>>214 も頭おかしいけど、
ム板で挙動を表現するのに
>おかしい動き
とか言っちゃう池沼もスルーするべき。
>>216 公開掲示板でそれはおかしい
相手を選択したいならコミュニティやMLで質問するべき
220 :
デフォルトの名無しさん :2012/01/28(土) 11:57:29.61
>>213 おかしい動きwwwwしてるのはお前の頭の中だろwwwwwwwwww
>>213 >>215 http://perldoc.jp/docs/perl/5.10.0/perldata.pod#Scalar32values > ハッシュをスカラコンテキストで評価した場合、ハッシュが空のときにだけ偽が返されます。
> キー/値のペアが登録されていれば、真を返します。
> (注: 5.12.x までの perl では) tie したハッシュがスカラコンテキストで評価されると、
> (略) 致命的エラーとなります。
my %hash; print '1:', %hash ? 'true' : 'false', "\n"; # false
%hash = (); print '2:', %hash ? 'true' : 'false', "\n"; # false
# true。undef はキーにも値にもなり得る
$hash{ undef() } = undef; print '3:', %hash ? 'true' : 'false', "\n";
# 2。関数である事を明示していないので、文字列 'undef' と解釈されている
$hash{ undef } = undef; print '4:', scalar keys %hash, "\n";
# 2。undef を文字列コンテキストで評価すると空文字列なので 3: と重複
$hash{''} = undef; print '5:', scalar keys %hash, "\n";
# 3。空文字列と '0' は別
$hash{'0'} = undef; print '6:', scalar keys %hash, "\n";
# 3。数値の 0 を文字列コンテキストで評価すると '0'
$hash{ 1 - 1 } = undef; print '7:', scalar keys %hash, "\n";
print scalar %hash, "\n"; # '2/8' のような文字列
%hash = (); print scalar %hash, "\n"; # '0'
javascriptの比較演算の茨っぷりに比べればまだ……
こういう下を見て我慢するタイプのヴァカって成長しないよね
224 :
デフォルトの名無しさん :2012/01/28(土) 15:07:51.17
こういう他人を見下してばかりいる池沼も成長しないよね。
下等動物には、そもそも成長なんて概念はないからな。 死ぬまでこのままだよw
加藤茶生物
>>208 >>212 でOK
if (@array) は配列の要素数を見てるので、0が入ってれば要素数は1なので、真になる。
配列はスカラーコンテキストで評価されると、その要素数を返す。
ifの条件部分はスカラーコンテキスト。
分かりやすくscalarと明示的に書いてもいい。 if (scalar @array)
そういえばfor以外にリストコンテキストって何があったっけ。
リストコンテキストとかスカラコンテキストってのは Perの言語仕様の失敗した所の一つだよな。
お前って人生失敗した馬鹿の一人だよな
うん
>>239 習得の障害になる。だが、習得するとそのご利益に感動する。
君みたいに習得できなかった脳弱に遭遇したときかな。
答えられないなら書くなよw
237 :
デフォルトの名無しさん :2012/01/28(土) 18:20:37.28
>>229 Perってなんだよ
パーはてめーの頭だろ
スカラコンテキストとかリストコンテキストは 最初良くわからなかったな。 でも、wantarrayみたとたん一瞬で理解した。 ただの関数の引数の一種にすぎないんだって。 俺にとってはこう見えてる。 foo(123) → foo(FLAG_ARRAY, 123) scalar foo(123) → foo(FLAG_SCALA, 123) foo(flag, value) { if(flag == FLAG_ARRAY) { // wantarray ・・・ } else { ・・・ } } あとは読み出し元のコードの書き方で、 フラグが適当に変わるだけ。
void contextのこと忘れないであげて
PerがPerlでないように、PerlもPerじゃないんだよね 言葉は変化するというけれどこれはただのtypoだよね 意図的かもしれないからその手には乗らないけどね
【中国BBS】2030年に韓国が日本を抜く? 反対意見が多数
中国大手検索サイト百度の掲示板に、「2030年に韓国のGDPは日本を追い越すって本当?」というスレッドが立てられた。
これに対して反対意見が多数寄せられている。
● スレ主:八戒窘6
アジア開発銀行のデータによれば、2030年に韓国のGDPは日本を追い越すらしい。
● せんとう
どんな予測も多少なりとも正確ではない所があるが、今回の話はあり得なさ過ぎる。
● satay醤
本当にデタラメだな。アジア開発銀行によるレポートだって?じゃあバンク・オブ・アメリカや欧州の銀行の結論はどうなのよ?
● 佚名野菜地
アジア開発銀行ってのは、韓国人が開いているのか?
● Joseph19969
俺の妄想では、2100年日本人の1人当たりのGDPは46万ドル、韓国は8万だな!
● o落葉不知秋o
その頃までに韓国という国が残っているかどうかも分からないぞ。
● 梨花陰凉
死んでも信じない。
● MakiのLove
なんか最近、韓国のニュースが多くね?
http://news.searchina.ne.jp/disp.cgi?y=2012&d=0128&f=national_0128_091.shtml
変数XをXのまま計算して答えを出す方法ってあるでしょうか? 例えば、Y=(X-4)^5という式があったとして代入すれば答えを出すのは簡単なんですが、 Y=X^5+A*X^4+B*X^3・・・+E(A-Eは数字が入ります) というような形の式を得たいのです。
>>244 数式処理でググると色々出てくるんじゃね
>>244 ?、書いてあるのでいいじゃん、と思うのだが、
よくわからないので、自分で書いた動かないコードを貼るのがいい
>>244 http://www.wolframalpha.com/input/?i=Y%3D (X-4)^5
Perlを始めとした多くのプログラム言語は数を直接計算する為の道具です。
数式を計算するようデザインされたものではありません。
一般的なプログラムで解を得るには:
与えられる数式を数の組で定義し、
YをXの多項式で表現する方法を定義し、
数式を多項式に展開するロジックを定義しなければなりません。
ロジック無しでは簡単な因数分解すら解くことはできません。
上のリンクはかつてMathematicaという名前で販売された高価で複雑で膨大な
数式処理ソフトウェアをウェブサービスに当てはめたようなものです。
"show steps"ボタンを押すと、愚直なプログラム言語が
如何に数式を計算するかを垣間見ることができると思います。
249 :
デフォルトの名無しさん :2012/01/29(日) 09:30:46.02
そんなことも知らないのか
>>244 > 変数XをXのまま計算して答えを出す方法ってあるでしょうか?
あります
中等学校で数学という教科でその方法を習います
>>250 コンピュータは中学生以下ということですか?
ああ、
>>250 って1行目の日本語がおかしいのか。
最後の文が本当で、式変換したいってこと?
253 :
252 :2012/01/29(日) 11:50:09.01
でも数式処理とかいうfuckでshitな作業は lisp使えば楽に出来そうな予感はする perlにゃ向いていない気もする ゴリ押しすりゃ出来そうだけど クソの塊みたいなスパゲチーコードになるはずだ
数学の問題を読む時点で国語の能力が必要となる罠。
まあ俺ぐらいの年代だとスパゲッティーは辞書を引かないと分かんない から、これからはナウくパスタスクリプトって言ってもらいたいね。
>>258 子供並みの文章力では
煽りにすらならんわ
第一ヒント:印刷に関係がある
第二ヒント:逆ポーランド記法(LISPとは違うのだよ、LISPとは!)
答え:JavaScript
263 :
252 :2012/01/29(日) 16:47:40.97
ああ、俺がアホだった。
>>242 の日本語は特に間違ってないな。
265 :
252 :2012/01/29(日) 17:01:36.83
うぅ、、すまん、
>>244 だ。
途中式が欲しいなんて思ったことないから、わかんないや。
いちおう、CPANでMath関係を探してみてるけど。
266 :
232 :2012/01/29(日) 18:19:56.11
>>234 たとえば、
$str = <$fh>;
@str = <$fh>;
の両方が成立すること。
プログラムをしていてストレスを感じることは普段と違って余計なことを
意識したり、余計なことを書かねばいけないことなんだ。
普段、人間相手だと細かく言わなくとも通じるように、状況に応じて対応を
変えるというのは人間には自然なんだと思う。だから、状況に暗黙に対応してくれるほうが
明示的じゃないと対応しないほうより楽で、Perlっていいなとおもってしまう。
ただし、これは、CとかVBとかしか知らない経験の少ないアマチュアプログラマの意見だ。
場違いだったかも。
>>266 コード見て何をしたいのか全くわからんねw
上の方、ファイルの行数を取得するのか?
それとも一行目を取得するのか?
そんなのいちいち覚えてないといけないだろ?
今、お前は心の中でどういう機能か説明しただろう?
コードってのは読むもの。
普通に読んだら、それが動きを表すほうがいい。
ファイルのgetLineCount
ファイルからgetLine
ファイルからgetAll
ファイルから何をしたいのか、
説明しなくても分かるだろう?
説明が必要なものと、説明が不要なもの。不要な方が良い。
多分そういう徹頭徹尾膨大な英単語羅列で言語が出来てたら ここまではやんなかったと思う ごくごく単純に何かのテキスト開いて処理するだけの豪華なフィルタが欲しい、 そのためにあるようなモンだから ファイルのオープンとかいう初歩の初歩ののっけからウンザリするほどの長さがあったら、 気楽に使うこたぁーーできない コードの表音的な部分だけじゃあなくて表意的な部分、シジルとか。 もっと言えばコードの意味じゃなくて形のようなものも読んでる 他の言語はやたらと英単語が多くて、最近のperlもその傾向があるけど、 英単語がやたらと多いと説明読むだけでめんどいこともある
BASICのLET「呼ばれた気がしたが気のせいだった」
はいはい、COBOLER、乙。
> $str = <$fh>; > @str = <$fh>; これって演算子オーバーロードと同じようなものだろ? str = fh->$() str = fh->@() とくれば str = $(fh) str = @(fh) こう置き換えられ、 str = $fh str = @fh こうなるのが自然な形 本来はこうあるべきだが、残念なことにPerlはオブジェクト指向じゃなかった。 引数の型で呼び出すメソッドが決められなかったので 代入先の型で呼び出すメソッド側で判断できるようにした。
はいはい、オブジェクトオタ、乙。
できれば、反論が欲しい所w ま、無理か。
特に反論する内容はない。
>>267 ある程度覚えるのはしょうがない。程度問題。
数式を全部文字列であらわされたらしんどい。
良く使う機能だからこそ、記号化されてる。getLineとか一般的な機能にそんな長い名前は要らない。
javadriveからのコピペ File file = new File("c:\\tmp\\test.txt"); FileReader filereader = new FileReader(file); int ch; while((ch=filereader.read() ) != -1){ System.out.print((char)ch); ch = filereader.read(); } perlでの例 open my $fh , "<", "test.txt" or die $!; while (my $line = <$fh>){ print $line ; } open my $fh , "<", "test.txt" or die $!; while (<$fh>){ print; }
ついでにとほほからも 一行読み込み Java FileReader in = new FileReader("file.txt"); BufferedReader br = new BufferedReader(in); String line; while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); in.close();
シングルクォートを使った場合のパス処理がよく分かりません。 my $abc = '$abc'; my $str = '$abc'; my $expr = '$abc'; print $str =~ /$expr/; これが偽になるのはなんでですか?
279 :
278 :2012/01/29(日) 23:38:27.90
あ、分かった。 すみません、おおボケかましてましたわw
>>267 getlineでもgetlinesでも好きに書けばいいじゃーん。
use 5.12.0;
use IO::File;
open(my $fh, '<', \"foo\nbar\nbaz\nqux") or die $!;
while(defined(my $line = $fh->getline)){
print $line;
}
$fh->close;
Perlの元来の用途はテキストの加工なワケで、そのために 文字列の一行入力なんていうあまりにも頻繁に使うであろう操作は いちいち命令なんて使わずに専用の演算子でいいじゃない、となったんだろな
だろうね。 でも、アプリ(ウェブアプリ含む)だと テキスト入力ってあまり行わないんだよな。
ARGVについて詳細を調べたいのですが、どのドキュメントを引けば良いのかが分かりません perlvarでは無いようですし…どこにあるのでしょうか?
ごめんなさいありました…
ここくる前に体系的な本読んだほうがいいぞ
と言われてどこから入手したのかラクダ本(第1版)やらリャマ本(第1版)読んで勉強するのが このスレのいつものパターン
んなもん古本で買えば良いだろ、と思ったが、 アマゾンのマケプレだと現行版は中古で買う気が失せるほど高いんだね。 初版は1円だけど。
ラクダ本は一番新しい第3版が2002年出版、5.6準拠だぞ (英語版は2月に第4版出るけど) 今勉強するとしたらWebに限る
>>288 >今勉強するとしたらWebに限る
んで「<>ってなんですか?」とか「ARGVって何ですか」とか「コンテクストって何ですか?」と
匿名掲示板で質問するのか?
ふざけんじゃねーよ。
>>289 じゃあラクダ本読んでるやつはそんな質問しないってか?
おこりんぼ
今から勉強するならPythonとかだろ…
初めてのPerl 第3版の古本を買うか、図書館で借りればいいよ。
>>295 そうだな。Pythonを使えば全てのバッドノウハウから解放される。
それどころかバッドノウハウに頼らざるを得なくなる場面が根本的に発生しなくなる。
でもPythonでワンライナー書きたくないな〜
u"これはUnicode文字列です" これがバッドノウハウじゃなかったら一体バッドノウハウはなんなんだよwwwwwwwwwwwwwww pythonはクソと汚物とアホの塊だろwwwwwwwwwwwwwwwwww uだよu!!!!!!!!!!!!!! バカアホクズ三拍子そろった BAD NOWHOW だよwwwwwwwwwwwwwwww wwwwwwwwwww wwwwwwwwwwwwwwwwwwww wwwwwwww
perl -pe's/w//g'
300ゲト
301 :
デフォルトの名無しさん :2012/01/31(火) 04:46:57.94
それでもゴミPHPよりははるかにマシ
0xFF これは16進数です と何が違うんだい?
NOWHOW ここはつっこんでいいところなのだろうか。 しかし恥かかされたと憤ってさらに草生やされたらたまらんからスルーがいいのかな…
そのほうがいい。それに今もDOS使ってるから、BATノウハウも必要だしな。
またそんな必死に釣りを仕掛けんでも
>>303 草に隠れて見逃してたw なんというステルス
307 :
デフォルトの名無しさん :2012/02/01(水) 05:22:54.38
PerlってーとCGIとしての用途しか思い浮かばないけどお前ら何作ってんの?
自分だと、サーバの自動処理とか大体Perlだなー。
$str = <STDIN>; と記述しても入力欄が表示されないんですが、どうしたらいいのでしょうか。 何か他に記述することがあるのですか、どなたか教えてくださいませ。
どういう環境でperlを起動させているのかわからないと 答えようがないんじゃないかと
>>307 俺はむしろCGIで使ったことがないw
Unix系なら各種フィルタやシェルスクリプトでサクッとやれることが
Windowsのデフォルトの環境だとサクッと出来ない
でもコマンド一式入れるのは色々と面倒いから
Perlにその辺をやらせてるな
ワンライナーだったり、.batに埋め込んだり…
> Windowsのデフォルトの環境だとサクッと出来ない JScriptつかえばいいやん。
>>312 JScriptg/WSHで一通りのテキスト処理は出来るけど
それは果たして「サクッと」と呼べるのだろか
学生の頃は掲示板とか作って遊んでたが 今は禿丸じゃ手に負えないテキスト置換に使っている。
Apacheのログ解析ツールとか作ったな 既存のツールだと不満だから作ったが 結局解析結果を見るのに飽きて全く見なくなって、いつの間にかどっかいった
Perlを使い始めて20年、今でも日常のちょっとしたツールはこれで作ってる。 面倒な文字列処理があまりにも易々とできてしまうので、やめられん。
$HOME/bin/ 以下の俺コマンドの類はほとんどPerlだわ。
CGI、CGIってよく言われてるけど、おれもあんまり作ったことがない。 Perlはテキスト処理や、日ごろのちょっとした処理に使ってる。
>>309 を書き込んだ者です。
環境は、お名前ドットコムというところのレンタルサーバーで、ぽちぽち練習しております。
DELLのノートPC、WinXPを使用しています、エデイタはPadreのデフォルト設定です。
何度試しても<STDIN>が使えないのですが、どうしたらいいのでしょうか。
print STDERR "お名前を入力してください="; $str = <STDIN>;
chomp($str); print STDERR "こんにちは、$str さん。\n";
print "Hello, world\n"; は実行できるの?
エデイタに違和感がする。
>>320 だから一冊本を通読しろっての。何度も同じこと言わせんな。
perl のバージョンが書いてないから、インストールされてないことも 考えられるね。きっと Hello, world も無理だよね。
327 :
デフォルトの名無しさん :2012/02/02(木) 00:05:05.83
>>320 CGIに関する質問は板違いです。
>>1 を参照してください。
レンタルサーバー云々の話はそちらでお願いします。
309です。 こんな池沼しかいない底辺スレで質問した私が馬鹿でした。 二度ときません。
332 :
325 :2012/02/02(木) 01:35:56.94
ニートの分際で生意気だな
解決策とその理由をきちんと順序立てて提示するとなると ちょっとした本一冊書ける量になる予感
Padreを使ってみた。コマンドプロンプトで入力すればいい。 オプションでExternalなんとかをオフってると詰むけど。
エスパーすると、PerlIOとhtmlタグを混同しとるんじゃなかろうか。 <STDIN>使えば<form><input type="text"></form>が出力されると勘違いしてる節がある。 どっちも角括弧使うし。
337 :
デフォルトの名無しさん :2012/02/02(木) 04:32:05.42
嬉しそうにスレ違いな書き込みをしてる社会不適合にエスパーは不要
まぁそうカリカリせず。 板違いはその通りなんだけど、どうして勘違いしちゃうのかは興味ある。 分からない方にとっちゃどう聞いていいかも分からんわけで。 自分の納品物がこんな風に動かねーってクレーム入れられた場合どう誘導するのが一番かな。 IO::Interactiveあたり噛ましてエラー吐かせて説明するとか?
340 :
デフォルトの名無しさん :2012/02/02(木) 12:54:16.59
連想配列のkeyの名前は文字数制限や使えない文字はあるんですか? ファイルパスをkeyにしたいんですけど好ましくないんでしょうか? $file_path="./log/bbs_name/test.dat"; $FILE_LOCK_FLG{$file_path}=1;というようにです
341 :
デフォルトの名無しさん :2012/02/02(木) 13:13:33.29
それで何か問題あったの?
342 :
デフォルトの名無しさん :2012/02/02(木) 13:39:55.23
うるさいゴミ
連想配列のkeyの名前は文字数制限や使えない文字はあるんですか?
そりゃあるだろうよ。 100兆文字使えるわけないだろ。 常識で考えろ池沼。
>>345 そんな頭の悪い発言で先生面するのはやめなさい
347 :
デフォルトの名無しさん :2012/02/02(木) 13:45:17.95
そしてフォルダ名からkeyにマルチバイト文字が混入し、バグに苦しむ低脳(
>>340 )であった
なにいってんだこいつ(AAry
趣味グラマだけどPerlが好きで、今更だけどラクダ本買って今読んでるんだけど 冒頭にラリーの言葉でPerlのコミュニティは素晴らしいって書いてあったんだよね。 それで穏やかな気持ちになってさ、2chのPerlスレはどうなんだろって覗いてみたんだがお前らカリカリしすぎワロタ
350 :
デフォルトの名無しさん :2012/02/02(木) 13:49:18.63
カリカリしてるのは煽りたいだけの糞以下ゴミクズ基地害1匹だけ、マジで消えろよ
>>350 自己紹介乙。
カリカリしてるって笑われてるぞw
こんな時間から書き込みしてるとか余程程度の低いニートなんだろうな。
お前生きてる価値あんの?w
>>350 俺にはキミが一番カリカリしてるように見える。
とりあえずもちつけ。
>>349 もうぶっちゃけるけど、Perlに限らずム板マ板にまともなプログラマはいないよ。
みんなブログやTwitterあるいはGithubで情報発信や交流している。
名無しさんにうずもれて満足して、ここにしか居場所がないようになると
それだけ新しいプログラミングの習得が遅れる。
このスレで書かれてるコードが10年前基準のレガシーなものだらけなの見ても分かるでしょう?
またレガシー厨か
355 :
デフォルトの名無しさん :2012/02/02(木) 13:56:55.33
そうだな、俺も基本的に情報交換はTwitterだわ。 2chは惰性でチェックしてる。
356 :
デフォルトの名無しさん :2012/02/02(木) 15:11:21.74
>>356 によってこのスレの存在意義は完全否定されました
今までPerl質問スレをご利用頂き、ありがとうございました
だから今こうやって調べてるんじゃないですか。
最近レスの流れが早いな
>>340 perlgutsでは、キーの長さはU32になってるから、
短くても32bitで表現できるバイト長は保障される(コンパイルされた環境に依存)だと思う。
use Config qw(config_vars);
print config_vars('u32size');
361 :
デフォルトの名無しさん :2012/02/02(木) 17:50:11.77
プログラマーって根暗で穏やかじゃない人が多いですね このスレ見て思った
362 :
デフォルトの名無しさん :2012/02/02(木) 17:57:06.32
>>361 ここはいつからお前の感想掲示板になったんだ?
ブログにでも書いてろ真性基地害
おやおや威勢のいいお兄さんだ
>>361 で?
根が明るいだけしかとりえのないプログラムスキル皆無のゴミが何の用?
365 :
345 :2012/02/02(木) 18:12:56.25
>>360 ほらな、だから100兆文字は無理だって言ったんだよ
考えればすぐ分かるだろ
>>362 じゃあここは何のスレなのかな?
質問しに来た人に対しちゃんと答えるスキルはあるけどあえて教えずネチネチいじめるスレなのかな?
367 :
デフォルトの名無しさん :2012/02/02(木) 18:14:51.41
自分は根暗でもなく穏やかだと思ってるイケヌマン(
>>361 )がいるときいて
韓国の首都上海からテポドンに乗って飛んできました!
369 :
デフォルトの名無しさん :2012/02/02(木) 18:22:15.52
どう見ても自演です 寂しいのかな
>>349 ここはPerlのコミュニティじゃなくて2chだから。
荒らすのだけが目的の奴がまぎれてるからなあ。 前はコテハンもどきを使っててあぼーんしやすかったんだけど 最近使わなくなったのか別の奴が流入してきたのか 紛らわしくていかん。
374 :
デフォルトの名無しさん :2012/02/02(木) 21:11:44.51
どうせPHP厨かレガシー厨だろ。 PHP厨はPerlが存在する限り日の目を見ることはないからな。
キーについて質問してるヴァカがいるけどどうせ何一つ調べずに質問してるんだろうなキモい
376 :
デフォルトの名無しさん :2012/02/02(木) 21:49:34.23
activeperlをwindowsで使っています ms-dosの8.3形式の短いファイル名の一覧を取得する方法はありますか
378 :
デフォルトの名無しさん :2012/02/02(木) 22:07:37.89
全一覧取得→性器表現
380 :
379 :2012/02/02(木) 22:29:16.51
>>377 採用されそうにないが
D:\hoge\fuga の一覧
my @filename_8_3 = grep {/\S+ +\S+ (\S+) +\S+/, $_ =$1} qx'dir /x D:\hoge\fuga';
d ばっちり動きました
>>320 レンタルサーバーがDELLのノートPCでWinXPをインストールしてあるんですか?
ところでインストールしてあるPerlのバージョンはいくつですか?
ちなみに
perl -v
でバージョンを調べられますよ。
384 :
デフォルトの名無しさん :2012/02/03(金) 01:06:10.78
>>320 文章からしてそのレベルでは無理
お前はもっと低級な言語でもやって標準I/Oなんかを学習するべき
あと<STDIN>が使えない段階でPadreを使うのは早いですよ。 本質的でないところではまってしまい、前に進みません。 また分からないことがあったら遠慮なく聞いてください。
Padreはゴミ Perlという言語ではゴミしか作れないだろうけど。
使い捨てに向いた言語って、結構な褒め言葉じゃね?
388 :
デフォルトの名無しさん :2012/02/03(金) 03:03:11.29
PHP厨様こんな夜中まで書き込みご苦労様です^^ Perlはゴミしか作れませんが、ゴミすら作れず時間が失われるだけのPHPよりはマシですね^^
ほら、嫉妬してる奴が釣れちゃっただろw
猫に小判 豚に真珠 PHP厨にPerl
効いてる効いてる
392 :
デフォルトの名無しさん :2012/02/03(金) 15:24:03.30
ス テ マ の 予 感
393 :
デフォルトの名無しさん :2012/02/03(金) 21:54:38.24
PHP厨にPerl
CAPTCHAの認証を破るモジュールとかないよね・・・ 無理かな
ぼくの考えた最強の PHPeruby
396 :
デフォルトの名無しさん :2012/02/04(土) 00:36:47.06
モジュールとして公開されてたら誰でも破れるだろボンクラ 誰でも破れるものをわざわざ手間かけて実装する低脳がどこにいるんだよパーかおめ
だよな 諦めるっきゃないか
モジュールですべてを行おうとするから出来ないんであって、 文字を判読して打ち込むところを人間にしてもらうように 作ればいんじゃね?ただし人間というのは当然、自分以外のっ てことだけど。エッツな画像とかをえさにすれば、入力して くれるひともいるでしょ。
399 :
デフォルトの名無しさん :2012/02/04(土) 00:45:28.75
お前が高脳で諦めずにそういうモジュールを完成させても 公開すれば間もなくみんなCAPTCHAやめて別の方法とると思うぞw そこまで高い的中率を求めるのでなければ自作もできるんじゃない? 画像認識の話になるからそれ系の話を探せば出てくるかもな。
エロ画像ダウンロード画面でCAPTCHAと入力窓出して、入力されたら裏で認証するとか? 確かにそれだとバレないな。
Perl使いにはハードルの高いものだな
CAPTCHA認証は100%不可能。超むずい
作るほうはたくさんモジュールあるんだけどなw
JDownloader
>>399 >公開すれば間もなくみんなCAPTCHAやめて別の方法とると思うぞw
それはそのとおりだと思うけど、
>>394 の要件に含まれていないからいいよ。
手動はメンドイな 本当なんつーものを開発してくれたんだよ
408 :
デフォルトの名無しさん :2012/02/04(土) 10:49:20.61
最近は犬と猫の色んな写真を8枚くらい表示して 犬の画像を全部選択しろとかもあるな CAPTHAの次はこれが標準になるだろう 俺の予想ではその次は全部同じ生き物の写真になると思う 例えば全部人間で、商談してる写真やら野球してる写真やら絵を描いてる写真が10枚程表示されて 「スポーツをしてる画像を全部選べ」みたいな さらにその次は馬鹿撃退用に知識を問う画像が表示されるだろうな アンコールワットやマチュピチュなんかの写真が12枚程表示されて 「世界遺産を全部選べ」みたいな 画像からググるのはほぼ不可能に近いから一般常識のない馬鹿は撃退される それを突破しようと思ったら人工知能レベルのモジュールが必要 今から作っとけ
たった100兆文字くらい、京なら余裕でしょ。 ちょっと昼休みに試してみるわ。
日本語とかもあるし大変だろ
そこはほら、jperlだょ
s/すでに//
CAPTHAの件、 文字を扱えるのは人間だけだってことか utf8フラグが文字を扱えるわけじゃないってことか。。。
>>415 何を言ってるのかさっぱりわからん。
データを見た時、データだけでそれが文字かどうかは人間しか分からないから
データとは別に、utf8フラグを明示的につけてやることで
コンピュータが文字と認識できるようになるってことだろ
417 :
デフォルトの名無しさん :2012/02/04(土) 11:37:30.63
今日は土曜日!二日市に行こうかな。 でもな、特に目ぼしいものナさそう。 ノートパソコン欲しい。mac book airよさそうと思ったけど、最低8万するんだね。 たかい。
>>417 ようするにファイルのことだよ。
ファイル中身を見ただけじゃ、それが文字ファイル
(テキストファイル)なのかバイナリファイルなのか分からない。
もちろん、入っているデータや拡張子から推測はできるが
100%正しい訳じゃない。
それは変数に入っている値も同じで、
コンピュータ(Perl)は中に入っているのが文字なのかバイナリなのか分からない
その二つを区別できなければ、”文字”数の情報が必要な処理や
1文字づつ処理するような関数が作れない。
よくあるのが、マルチバイト文字を渡したら、1文字の左半分だけ残って
右半分が落ちてデータが壊れるとかね。
だから、UTF8フラグというものが必要で、それをつけることでPerlは
文字として判断できるようになる。
まあ、これがモダンな(といっても何年も前から)のPerlの文字列の扱い方。
>>398 CAPCHA認証を行っている多くのサイトは、まさに今それをやってるんだよ。
Googleから判読不能な文面を受け取って、自身のCAPCHAシステムに組み込み、
入力の集積結果をGoogleに渡してお金を貰うという仕事だ。
CAPCHAは無理だろ 記号着地問題とかフレーム問題とかクリアせにゃ 超精度のOCRのようなモンができても、 文字じゃなくぬこ写真が出てくれば、それまでだ 画像を記号に変換するつよーいAIが登場しないと、 CAPCHA突破はムリムリだぁ
422 :
デフォルトの名無しさん :2012/02/04(土) 15:16:05.36
愛くるしいぬこ写真がこれ程凶悪な障壁になろうとは誰が予想しただろうか
ファイルテスト演算子の-dでディレクトリかどうかを判断すると ディレクトリが多数あるのに「.」「..」しかヒットしないんですが、なにが原因ですか?
424 :
デフォルトの名無しさん :2012/02/04(土) 16:06:17.48
□判定前のファイルとフォルダ混在した一覧にはフォルダはあるのか □対象ディレクトリのパスは間違っていないか(特に相対パスの場合)
どんな言語であろうとCAPCHAは無理なんだな そりゃCAPCHAが大流行するわけだ
-d 使っているまさにそのコードで cwd してみそ
ぼくが考えた最強の KATO-CHA
ちゃっとだけよ(はあと)
429 :
423 :2012/02/04(土) 16:41:35.10
>>424 レスありがとうございます
・フォルダはあります。
・対象ディレクトリのパスは間違ってないです。コード中の
while (my $file = readdir $dh) {
if (-d $file) {
print $file;
}
となってるところを
while (my $file = readdir $dh) {
print $file;
にしてみたらちゃんと目的のディレクトリを含むファイルの羅列がprintされました。
なぜファイルテスト-dが成功しないんでしょうか?
430 :
423 :2012/02/04(土) 16:44:42.38
>>426 レスありがとうございます。
use Cwd qw(getcwd);
$ret = getcwd();
print $ret;
したら、このコードが置いてあるディレクトリ名が表示されました。
ディレクトリハンドルに指定したディレクトリとは違います。
431 :
デフォルトの名無しさん :2012/02/04(土) 16:50:22.36
if (-d $file) を $filepath = "検索対象のディレクトリ/" . $file; if (-d $filepath) に変更するとか?
432 :
423 :2012/02/04(土) 16:53:17.98
レスありがとうございます。 $fileに入ってるディレクトリ名はすでにフルパスなんです。 もしかしてWindowsだとファイルテストが機能しないとかあるんでしょうか?
utf8フラグは自分で立つわけじゃないから、CATCHAを破ってくれないってことでおk?
use utf8; 使ってる場合は、このスレの専門家が長文で丁寧に教えてくれる。 それまで待て。
435 :
423 :2012/02/04(土) 16:56:47.06
>>431 すみません。読み込む直前でフルパスじゃありませんでした。勘違いしてました。
言われたとおり改めて変更してみたらうまくいきました。
ありがとうございました!
どういたしまして
>>420 エッチな画像見てそのうえGoogleから給料貰えるなんて最高じゃないか
ぐああああ CAPCHA対策された 手でシコシコ面倒くさいな・・
迷惑スクリプト乙
まずそのクソスクリプトの先頭に use strict; use warnings; と書き込めアホ
お次はそのゴミカスみたいな変数をmyで宣言しろ my $n = Math::BigInt->new("2"); こういう風にやれ
反応はええんだよクズ 俺の都合も考えろ
……俺の勘違いでなきゃ、相手の鯖に 775145**3≒465.7ペタ個もの配列を要求するんじゃね?これ……
ああいやいいのか、すまん
……とりあえず最大限意向を尊重するとこんなコードになるのか? ただしこれでもTimeOutになりかねない(71を見つけるまでが長い) use strict; use warnings; use bigint; my $target = Math::BigInt->new("600851475143"); my $target_backup = $target; my $max = int(sqrt $target); my @era = ("0") x $max; my $n = 2; my @q = (); #素因数 for($n; $n <= $max; $n++){ next if $era[$n]; #素数ではなかった for($b = $n; $b * $n < $max; $b++){ next if $era[$b]; #素数ではなかった $era[$n * $b] = 1; #篩をあてる } if($target % $n != 0){ #素因数ではなかった next; }else{ #素因数を見つけた $target /= $n; push @q, $n; $max = sqrt($target); #これくらいやっとかないと重くてかなわん redo; } } push @q, $target; print join '', "\n$target_backup = ", (join ' * ', @q), "\n";
print`factor 600851475143`=~/\d+$/g
452 :
423 :2012/02/05(日) 16:13:57.80
口は悪いがここのやつらはやたら親切だな
>>452 ろくにスキルもないのに先生ぶりたい連中なんだよ
お察しください
>>452 やつらじゃなくて、一人だけね、そういう変なのが今常駐してるのは。
きったねぇ糞コードだなおい
457 :
456 :2012/02/05(日) 18:28:48.16
なんかいろんな数値でやったら変な結果がいっぱい出たw バグ取りせずに逃げよう...
my $max = 600851475143; my @n = (2..int(sqrt($max))); my @p; do { push @p, shift @n; @n = grep {$_ % $p[-1] != 0} @n; } while ($p[-1] ** 2 < $n[-1]); push @p, @n; foreach (reverse(@p)) { if ($max % $_ == 0) { print; last; } }
my $max = 600851475143; my @n = (2..int(sqrt($max))); while ($n[0] ** 2 < $n[-1]) { # あったほうがちょっとは早い? #if ($max % $n[0] == 0) { # @n = grep {$_ < $n[-1] / sqrt($n[0])} @n; #} @n = grep {$_ % $n[0] != 0} @n; } printf "%d\n", (grep {$max % $_ == 0} @n)[-1];
461 :
デフォルトの名無しさん :2012/02/05(日) 22:26:39.88
パールってスレッド作れないの? 一つのコードのファイルでマルチスレッドできないの?
スレッドは作れるが、ライブラリがスレッドセーフとは限らない。 野良ライブラリが多く、その野良ライブラリに スレッドセーフかどうか書いてあることは稀で 次第に嫌になってくるであろう
このスレで我慢しろ
464 :
デフォルトの名無しさん :2012/02/06(月) 06:45:58.34
465 :
デフォルトの名無しさん :2012/02/06(月) 08:48:27.47
PHP最強
○○○最強≠○○○だけ覚えれば十分、他は記憶領域の無駄だから一切覚えるな
467 :
デフォルトの名無しさん :2012/02/06(月) 14:22:39.79
もしプログラム言語を1つしか覚えられないとしたらPHPしかないじゃん これには異論ないと思う というか異常者以外は分かるはず 実際はいくつも覚えられるからPHPを中心に他の言語もかじってみるけど 他の言語は全部ゴミみたいなものだから結局PHPがいかに優れているかを再確認するだけになるんだよね
PerlもPHPもジャングル言語だ
【ジャングル】 弱肉強食 密林 錯綜、複雑 物騒な場所 非情な生存競争の場 浮浪者の集まる所
my $buf = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaa'; test($buf); sub test{ #1 #my $hoge = shift; #return length($hoge)/2; #2 #return $_[0]/2; } 引数渡すときに、コピーが作られるのは代入したタイミングですか? #2の場合は$bufの中身分のメモリは確保されないということでいいんでしょうか?
#2 #return length($_[0])/2; でした。 この辺はどうでもいいですが。
472 :
デフォルトの名無しさん :2012/02/06(月) 18:37:30.70
お前の存在もどうでもいい
473 :
デフォルトの名無しさん :2012/02/06(月) 22:32:18.10
perlでwhileの二重ループがうまくいかないのですが何が原因でしょうか? うろ覚えですがおよそ下記のようなものです。 while($a=<IN1>){ seek(IN2, 0, 0) while($b=<IN2>) { if($a=~$b) { 出力する } } } $aの一行目はちゃんと期待どおりに$bが出力されるんですが $aの二行目から$bが出てこないんです。 ファイルポインタの位置を戻さないとダメかと思ってseek入れたんですがダメでした。 ファイルには両方にそれぞれ対応する文字列が入ってます。
474 :
デフォルトの名無しさん :2012/02/06(月) 22:36:33.86
馬鹿には無理
seekよりもopenのほうが分かりやすいでしょ。 それよりもI/Oを最低限の回数にするために、 my @a = <IN1>; my @b = <IN2>; 以下、宿題。 のほうがいいと思うけどね。
「PHP 5.3.9」に危険度の高い脆弱性、最新版へのアップデートを (Impress Watch) - Yahoo!ニュース
http://vv1.jp/oqv さすがPHPさんやで・・・
479 :
デフォルトの名無しさん :2012/02/06(月) 23:55:39.20
>脆弱性を悪用された場合、遠隔の第三者によって任意のコードを実行される危険性がある。 任意のコードを実行されるんだってよwww PHPかっけー!www
481 :
デフォルトの名無しさん :2012/02/07(火) 23:15:39.41
>>476 それで読み込んだ場合要素には各行が入ったんですが基本的に行毎に入ると思っていいでしょうか?
処理系によっては空白区切りの単語毎とかいうことはあるでしょうか?
$/ の値次第 perlvar嫁
$num = 3; open(DATA, ">:encoding(cp932)", "./test$num.txt") || die "ファイルが開けません: $!"; これを実行しtext.txtが開けなかった場合、 「ファイルが開けません: ページ No such file or directory at test.pl line 10.」 と表示されますが、この時にファイル名を表示することは出来ないでしょうか? 今はこの様にしているのですが、毎回こうするのは不恰好で、 もしファイルが開けなかった場合にどのファイルにアクセスしようとしたのか分からないものかと思いました。 $num = 3; $filename = "./test$num.txt"; open(DATA, ">:encoding(cp932)", $filename) || die "ファイルが開けません: $filename\n$!";
>>483 "ファイル"を表示したい変数に置き換えれば?
お手軽な感じのサブルーチンか、ユーティリティクラスでも作ればいいんじゃないか。
486 :
デフォルトの名無しさん :2012/02/08(水) 05:46:47.65
うるさいゴミ
377です さらに、フルパスを8.3形式で取得する必要が生じました getcwdでカレントを取得して、各階層をGetShortPathNameしていく、 という方法は思い付いたのですが、もっと一発で済むような方法はありませんか
あ、なんかフルパスをGetShortPathNameするだけでいけそうでした
ラクダ本3版 88ページ リストを取り扱っている段なのですが # 「逆コンマ演算子」 return (pop(@foo) ,pop(@foo))[0]; とあります。この記述がどういう作用を持つのかは分かるのですが(配列から後ろ2つの要素を削除し、末尾だったものを返す) コメントの意味が解せません:逆コンマ演算子とはどういう意味なのでしょうか?
分かりました。コンマ演算子で項を繋げていった場合、スカラーリテラルで評価されるとリスト末尾の要素が返る。
それに対して
>>490 はリスト先頭の要素が返る。コンマ演算子とは逆の作用と捉えることが出来る。
なので
>>490 の記述全体の事を逆コンマ演算子と呼んだということですね。
うむ。そういうことだ。
493 :
デフォルトの名無しさん :2012/02/09(木) 22:41:48.75
494 :
デフォルトの名無しさん :2012/02/10(金) 01:41:12.46
ファイルを1行ずつ読んで処理してます。ループ内でさらに1行だけ先読みしたい場合はどうすればいいですか? while (<>) { my $line = $_; ... if ($line =~ /xxx/) { #ここでさらに次の行を読んで一緒に処理したい } } よろしくお願いします
一行先読みじゃなくて一行遅延すりゃあいいだろ お前はアホか
496 :
デフォルトの名無しさん :2012/02/10(金) 03:31:52.51
すんまへん。一行遅延ですか。 自分は結局配列に入れました。
配列でいいとおもう それで問題が発生したら別の方法がないか 質問すればいい
>>494 http://perldoc.jp/docs/perl/5.10.1/perlfaq5.pod > perl -e "print join qq/\n/, qw(abc def ghi jkl mno pqr stu vwx yz)" > foo.txt
> perl following.script foo.txt
#!/usr/bin/perl -w
use strict;
while (<>) { chomp;
print "$.:", my $line = $_;
if ($line =~ /[ekw]/) {
# Win の場合は <> と chomp で削られる byte size が 2
my $lf = chomp(my $next_line = <>) ? 2 : 0;
print " (next: $next_line)";
# $next_line を本当に「先読み」扱いにしたいのなら
seek ARGV, - length($next_line) - $lf, 1;
--$.;
}
print "\n";
}
use Tie::File; #
http://perldoc.perl.org/Tie/File.html tie my @line, 'Tie::File', './foo.txt' or die $!;
for my $i (0..$#line) {
print $line[$i] = ($i + 1) . ":$line[$i]"; # 実際にファイルへ行番号を追記
if ($line[$i] =~ /[ekw]/) {
print " (next: $line[$i + 1])";
}
print "\n";
}
untie @line;
file1, file10, file2 という感じの文字列があって、 これを数値順にソートするにはどうすればいいですか 要は、エクスプローラのファイル名の並びです
>>499 Sort::Key::Natural とか Sort::Naturally とかを使うのが簡単。
手で作っても大したことないけど。
なんか Python スレにも同じ質問があがってたね。
>>500 両方使ってみましたが、思ったものと違うようです
数字の前の文字列が共通の要素同士ではちゃんと数字順に並んでいるのですが、
文字列部分での順序がランダムに見えます
ランダムという訳ではなくて何か規則はあるのだろうけど、多分賢すぎです
日本語を扱わせていることに原因があるのかもしれません
>>501 見るべき場所が判りません
例えば、natkeysortでは え00 う01 い02 あ03 a03 b02 c01 d00 こんな感じの並びになります
>>503 日本語いれるなよ。しきいがたかくなるやん
use Encode; とか…心細い
>>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($_)]} @_;
}
>>502 ちょっと見てみたけど、内部で use locale しているのは
Sort::Naturally だけだった。
Sort::Key::Natural のほうは日本語でもそのまま動くみたい。
Sort::Naturally を use せずに Sort::Key::Natural だけで
試してみてはどうでしょうか。
use Sort::Key::Natural;
@a = ('a03', 'b02', 'c01', 'd00', 'あ03', 'い02', 'う01', 'え00');
@b = natsort @a;
print "@b";
の結果が
>>503 になるようです
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";
}
おおー 解読できてませんが、ちゃんと動いているようです sort {$array[$a] cmp $array[$b]} (0 .. $#array) みたいな使い方がしたいので、sortから呼び出す関数の形になってると有り難いです
>>509 ちゃんと use utf8 すれば動くよ。
そう思って、encode('utf-8', ) とかはやったんだけど、
その場合の結果は
>>503 と同じで
use utf8 とは挙動が異なるようです
use utf8はちょっと避けたい理由があるので、
なんとかuse Encodeの範囲内で解決できませんか
>>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
);
>>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;
}
}
>>513 そもそも、もとの文字列が utf-8 じゃないのでは?
もし上の例で cp932 が生ではいっているのなら、
@tmp = map {decode('cp932',$_)} @a;
@b = map {encode('cp932',$_) } natsort @tmp;
でいけるはず。
use utf8して、スクリプト中に埋め込んだ文字列をソートするとうまくいくけど、 外部からsjisのファイルを読み込んでutf8に変換してソートしようとしても、 どうもうまくいきません
518 :
デフォルトの名無しさん :2012/02/10(金) 18:21:37.79
>>517 お前のコードがゴミなんだろ
ここで自分のコードはゴミですアピールして楽しい?
まじ池沼だな
>>517 ちゃんと、decode('shiftjis', $_) でインポートしてソートしてる?
>>518 更年期障害ですか、あんた
520 :
デフォルトの名無しさん :2012/02/10(金) 18:40:07.15
>>517 ここはPerlの質問スレであってお前の糞コードのどこが悪いかを質問スレじゃねぇんだよ
自前でエンコードするのは諦めて、
>>4 のテンプレを全面採用すると、あっさり動きました
うーむ、従うしかないのか、、、
その方がソースも遥かに綺麗ではあるんだけど、、、
sub s2u {
my $str = shift;
return encode('utf-8', decode('cp932', $str));
}
↑こんなのを書いて渡しても、挙動がおかしい
これの逆パターンの関数を書いて、uff-8ソースに埋め込みの文字列を表示させようとしても
化けたり、Wide character云々とか言われる
これでうまく行くケースも結構あるんだけど、utf-8にもいろいろあるみたいで、
その違いが乗り越えられない
522 :
デフォルトの名無しさん :2012/02/10(金) 19:04:07.43
523 :
デフォルトの名無しさん :2012/02/10(金) 19:11:36.80
自分でも叩けそうなレベルの話題になると急に元気になるのなw
>>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";
}
これで警告なくうまく出力されるけど?
>>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;
}
>>524 今こっちでも同じ答えを見つけたのにー
encodeしちゃいけなかったのね
decodeして中間コードみたいな状態で渡して、
受け取ったらdecodeせずにencodeだけすればいいのか
なんか気持ち悪いけど
>>525 おお、シンプル
試してみます
>>526 encodeとdecodeを根本で勘違いしてる。
decodeは、外部から文字列をPerlスクリプト内へインポートするための関数。
外部から取り入れた文字列はバイナリ認識だからPerlで文字列として扱えるようにする。
encodeは、Perlスクリプト内から外部へ文字列をエクスポートする関数
Perl内で文字列は特殊な方法で管理されてるから、その管理を外して外部でも使えるようにする。
インポートして、処理して、エクスポートする。
まあ、そうなんだけどね 何で今まで困らなかったんだろう そもそも、'utf8'という指定がencodeやdecodeで使えるのはどういうことなんだ
>>528 decode,encodeは「他のコード⇔UTF-8」じゃなくて「他のコード⇔Perl内部コード」だよ
「utf8フラグ」ってのはいい加減誤解の元だよね
530 :
デフォルトの名無しさん :2012/02/10(金) 21:42:14.63
見事に馬鹿しかいない
>>530 学校でろくな先生に出会わなかったんだろうな…
だからUTF8フラグが混乱の元。 Perl文字列フラグだったらよかった。
名前変えても挙動は一緒だろ、何が問題なのか全然分かってないなw
danが問題なんじゃなかったのか?違ったか?失礼。
大規模な文字集合になると、文字なのか文字でないのかの境界が 単純に0/1で分けられないからなぁ そういうのは今のところUTF8フラグでは扱えない それに文字か文字でないのかは多分に気分的なものがあるので、 そうなると本質的に機械では扱えない
>>535 お前馬鹿だろ?
頓珍漢なこと言ってるぞ。
, -‐‐‐‐‐- 、 /r。−、r。−、ヽ _.j .l_,...、_l l_,...、_l r‐、 l l‐r‐‐r―r―(,)‐ァ_.ノ 、ゝ  ̄  ̄ ノ. ノ <いきなり尻見せ ゝ、`‐――‐‐_',イ ヽ ( ̄て""´ ヽ \ \ .) 、 ~ヽ ヽ_人 l ,l / __/_ノ l -‐ ̄ ヽ \ ヽ
内部コードを隠してしまいたいのか、 世界全部が内部コードと同じになって欲しいのか、 方向がはっきりしない
世界全部が内部コードと同じになることはありえない。 答えは出てる。
今でも普通にsjisのデータが増え続けてるし、過去のデータはきっと永久にsjisだし
だけど、いちいちプログラマがこのファイルの文字コードは何だろう?と 考え続けていたら、大変なことになる。 だからせめてプログラム言語の中では統一しよう。 そうやってできたのがPerl標準のEncodeモジュール。
漢字に代表される大規模な文字集合の場合、一文字一文字が 英語でいうところの単語の性質を帯びてくる。 ここで、任意の英字の並びに対して、単語であれば1、単語 でなければ0、という「単語フラグ」というものを導入する ことを考えてみる。 Perlで単語を処理する場合は必ず単語フラグを1にしなければ ならない。 その試みは果たして成功するだろうか?
単語か単語ではないかを考えるのは無価値なので、考えない ことにして、英字の並びをそのまま扱うようにするのがいい。 (ここまでの答えを自分で出せたひとだけ次に進みます。)
結論 単語フラグは意味が無いのだから 世の中のフラグはすべて意味が無いものなのです。
546 :
デフォルトの名無しさん :2012/02/11(土) 19:14:26.21
少数の人だけしか理解できない呪文の不可解な連なりであり、 ヤギの血を含み、あなたの魂を永遠に堕落させる。 上司があなたに金曜夜21時に緊急の仕事を命ずるときにしばしば使われる。
時間を分単位とかで切り上げしたいのですが どうやったらいいのでしょうか
小学生のさんすうレヴェルだろ プログラミング以前の問題だ
20:11:15 を 20:12:00 に切り上げたいのか? まさか、お前。。。釣りじゃないよな?
>>544 君は、utf8フラグまで戻って出直してください。
552 :
デフォルトの名無しさん :2012/02/11(土) 21:24:59.13
>>548 失せろゴミ
ここはPerlの質問スレであって
幼稚園児並の知能しかない低能に手取り足取り教える場所じゃねぇんだよ
w
>分単位とか 「とか」って言ってる辺りで察してやれよ、頭が遅れてるんだろ。
>>548 my $time = time;
$time = $time - ($time % 60) + 60;
お前ら、更年期障害ですか。
556 :
デフォルトの名無しさん :2012/02/11(土) 21:43:40.50
>>555 更年期障害はオマエだよ
その時間とやらの書式なにも考えてねーだrks
>>557 秒数から加工する知恵がでないお前が頭悪いだろ。
>>558 どこにも秒数なんて書いてねーだろ
お前には別世界でも見えてんのかアホ
>>559 お前プログラムした事あるの?
あそこから希望の書式に加工できないの?
答えれないのなら質問以外でレスするなクズ
>>560 だからお前はどこの異次元のぞいてんだ
希望の書式 とか何かカッコイイ単語並べて悦にドハマりしてんじゃーよwww
そのクソ書式がどこにあんだよ
>>561 my $s = (time % 60);
my $time = time - $s + (($s > 0) ? 60 : 0);
これでよろしいか?
例出して答えろよ。
>>562 お前は黙ってろ
>>563 > 例出して答えろよ。
恥かいたからって八つ当たりかえ?
>>564 何言ってんだ?
「こうだろうがハゲ」とでもいいながら
正しい式書けって言ってんだ。
質問スレで質問でも回答でもない糞レスを増やすな
>>565 分からない時には逆ギレするように小学校で習ったのか、坊主?
>>563 > my $s = (time % 60);
また恥を増やすつもりか
それともオレのおなかをよじれさせるつもりかよwwwww
はたまた引っ掛けとか釣りかよwwww
$$$$$$$$$$$$
>>566 う〜ん?
ちょっと言ってる意味が分からない
>>567 さっぱり、お前の言ってる意味がわからん。
大丈夫か?
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); こんな感じ。釣りなのは分かってるけどね。
$day が抜けてたwごめんね
バグ入りコードを晒した
>>555 が必死で火消し中w
だがもう涙で画面が見えないw
572 :
デフォルトの名無しさん :2012/02/11(土) 22:23:49.16
原因は
>>548 この程度も分からない池沼ってコピペでしかプログラム組めなくね?
何でこの板にいんの?
でもこんなことも他人に聞く時代になったんだね。 未来にはどんな質問がされることやら。
>>569 それだと00秒の時にも繰り上げてしまうのがよくないって、さっき突っ込まれたけど。
それと、標準のlocaltimeは、Time::Pieceが無いのならしょうがないけど、
使えるならTime::Piece使う方が綺麗で簡単だしモダンなんだそうだ。
my $tp = Time::Piece::localtime($time);
print $tp->hms
>>571 どうした?
どこが間違ってるんだ、カッコ付いてるのが気に入らなかったか?
> カッコ付いてるのが気に入らなかったか? こりゃ思った以上に低レベルだわ 頓珍漢にも程がある
>>574 >それだと00秒の時にも繰り上げてしまうのがよくないって、さっき突っ込まれたけど。
そんなこと気にしない。
なぜなら 00 秒のときに実時間的には小数点以下の値があるから。
548に聞いてみ。問題ないっていうに決まってるぞ。
だいたい、そんなこといってる間に1秒たつだろw
>>575 はいはい、低レベル低レベル。
>>576 俺もそう思うけどw
でも指摘されたから修正したけど。
まぁ
>>548 の質問の内容には十分満たしてるだろ。
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] # 日単位で取得 こういうの、モダンのやり方だと解法が見えてこないよね。
440 : 名無しさん@お腹いっぱい。 : 2011/07/04(月) 00:00:00.00 ID:lVHU+IzZ0 誰だよ実質的に小数点以下の値がある とか穂剤てるアフォは そういうバグ野郎はさっさと寝ろよ
ここは、自分の都合に合わせて問題を勝手に変えてしまう ゆとりPGが楽しく集う場所みたいだなw
覚えたてで使ってみたくてしょうがないんだろな、オブジェクト指向。 気持は分かる。
学校のパールはPerl4かもしれないしね
>時間を分単位とかで切り上げしたいのですが >『どうやったら』いいのでしょうか プロセスを質問しているようなので、回答もプロセスがよろしいかと。
>>585 そんなバカなw
そんな学校辞めてOKだろw
万が一そうだったり、Perl4で強いたげられているんだ!だったら、
まぁその環境にあった良い感じでw
そこは 強いられているんだ!!! だろ
>>588 J( 'ー`)し ごめんね。おかあさんはじめて「強いられているんだ」使ったから、ごめんね。
しいたけたいらげている?
そもそも元の質問がPerl特有のものじゃなかったしな
おれなら秒単位で出力して、読むときに分単位で切り上げるけどな、キリッ
小学生の頃だったら、迷わずrootで1分進めとくオレだけどなw
バッカでぇーーッす!!!
>>585 >>587 ねーよww
そんな環境あったら抗議多発するし
今時4のみ対応のテキストなんてどうやって用意すんだよwww
($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); でいけそうです。ありがとうございました。
義務教育で全生徒が対象なので情報処理の基礎を教えるのが目的です。高度な機能は必要ありません。例えば分の切り上げのようなもので十分です。テキストは教師がプリントを作っています。Perl4を使うことに対して抗議されるほどそもそも授業数がありません。
中間の変数を使わない方法は
義務教育だから「こそ」せめてPerlなら5以上にしとけと思う俺は異端なのか?
>>598 だったらPerlじゃなくてBASICでもLOGOでも使ってれば?
それではjcode.plなどの 実践技術を学べないだろう
今でもjcode.pl使ってるヤツは、おばか以外の何者でもない。
お前KENTさんを侮辱するのか?
>>604 正直あの人のスクリプトは、もう古い。
有名だからって、あれを見習っちゃいけない。
このスレに質問してくる人の9割がKENT本読んでんじゃね?て感じのコードだしなぁ…
>>597 $time = int(($time + 59) / 60) * 60;
KENTのPerlスクリプトが 通用したのは2000年ぐらいまでだろうね。 今では、高校生がPerlでこんなのを作ってみましたって 感じにしか見えない。
プログラムなんか簡単そうに見えた方がいいだろ 難解なものを有り難がっているうちはビギナー
と言う奴が便利なモジュールを使うべきところで全部自分で一から書こうとする そしてそのスタイルを回りに強要する
KENTのコードは、今となっては モジュールでやればいいものを 自分で実装してるからな。 使えない。
612 :
デフォルトの名無しさん :2012/02/12(日) 14:15:42.36
俺の頭の中のPerlも2000年頃で止まってるわ 最近の日本語の文字コード変換のトレンドって何? 俺未だにjcode.pm使ってる DB使うには今でもDBIやDBDモジュール? use CGI;とか今でも使う?
>>612 >最近の日本語の文字コード変換のトレンドって何?
Encode
>DB使うには今でもDBIやDBDモジュール?
基本はそれ、あとはDBIx::*とか、らしい
>use CGI;とか今でも使う?
まあスタンダードだからね
あとはFastCGIとPlackお勧め
自分でやれる程度のものなら別にいいだろ モジュールを使うのは、自分でやってたら何日かかるか判らないような規模のものだ 好奇心で作ってみるには時間が無駄過ぎる
モジュールなら、ただ「使い方を覚える」だけでいい。
だが、それに頼り切って頭が腐った奴には
授業で習うレベルの古典的な
>>607 すら理解できない。
>>614 まだ目先のことしか見れてないね。
基本的にこんな感じで選ぶよ。
・標準モジュールは使う
・よく使われてるモジュールは使う
・コードがシンプルになるなら使う
簡単に作れるような内容でもテストまで含めたりすると、
殆どの場合モジュールを使ったほうが速いしね。
逆にモジュールを使わないと判断するのは、そのモジュールがもうメンテされてない。
バグが多い。世の中で誰も使ってない。オーバースペック。こんな所かな。
> 世の中で誰も使ってない。オーバースペック。 ようするに「わたしにはそのコード理解でkましぇーーーん!!」 だろ 先例主義のアフォかよw
他人のモジュールを使ってバグで悩むのは、作者の想定外のことをするからだ 想定しない作者が悪いというよりも、道具の使い道を把握できない利用者の責任 一度フリーソフトとか作って公開してみるといいよ 何でそんなことに使おうと思ったんだ、みたいな苦情が来るから
621 :
デフォルトの名無しさん :2012/02/12(日) 15:57:58.27
>>619 いや、それは作者のデバッグ力なさすぎな作者の責任だろ。普通に考えて。
想定外の使い方されないようエラーチェックするんだろ?
半角数字入力を期待する処理をする時、
半角数字以外の文字が入力されたらエラーと処理せず、
そのまま放置し不具合出たまま期待と違う処理を続行するような状態を、
「半角数字って書いてんのに、それ以外入力するお前が悪いから知らね」とでも言うのか?
例え日曜プログラマーだったとしても、プログラム作る人間の風上にも置けんな。
sub funk1 { print "argv: @_\n"; } $funk2 = &funk1; print $funk2("foo bar"); これを実行すると argv: とだけ出力されて何故引数が表示されないのか考えました。 何故print $funk2("foo bar");でコンパイルエラーが出ないのでしょうか? (use strictすると出ますが) $変数名に()をつけて呼び出す記法は無いと思うのですが。
Bareword
>>623 なぜ変数名に()を付けてエラーとならないかってのは答えれないけど、
argv: とだけ表示されて、なぜ引数が出力されないかって所は、かなり酷い状態だ・・・・
ちなみに、
sub funk1 {
print "argv: @_\n";
}
$funk2 = \&funk1;
$funk2->("foo bar");
こうすればいいんだけど、もっと基礎をちゃんと勉強しろ
リファレンスも知らないバカ
またスパルタ教師ぶりたい連中が湧いてきたな
>>625 なんか最後の一言で台無し
モダンPerlってうっかり車輪の再発明になってしまったモジュールのステマだろ?
>>627 普通にそういう状態だから。
答えを示さず煽るだけは嫌いだけど、
この質問はなかなか酷い。
2chで質問してイヤな思いするなら別で質問するんだな。
630 :
623 :2012/02/12(日) 18:53:17.29
すみません。純粋に疑問点だけを載せればよかったですね。 何故argvしか表示されないのかの理由はわかっています。
use strict知ってるのにリファレンス知らない奴なんてそうそういねーだろ
現に居てるじゃねーか
>>623 ↓出力する内容
print $funk2("foo bar");
↑ファイルハンドル
print $funk2 'foo bar';と等価。
>>632 は
>>623 を「リファレンスも知らない初心者」と決め付けたかったわけだな
残念、本当の初心者ならuse strictすら使えんよ
>>634 知らなかった事、間違ってた事を全力でフォローするな。
知らない事、間違った事を認めれないガキか。
「間違ってましたー、勉強してきまー」くらいで終わらんのか・・最近のガキは・・・
636 :
デフォルトの名無しさん :2012/02/12(日) 19:04:52.68
>>635 >「間違ってましたー、勉強してきまー」くらいで終わらんのか・・最近のガキは・・・
本当にそう言ったとしてもお前らがネチネチと終わらせないわけだが
623って頭悪そうPerl関連の本とか5冊も持ってないんじゃね。
>>637 それで終わってあとは二度とスレ見なければいい話だろ
>>623 みたいなマジキチは2chを便利なオンライン講座と勘違いしてるわけだし
>>637 誰かが言ってたけど、2chなんて便所の落書きと同じだ。
その中に有益な情報が紛れてるのを見付け出して利用する。
後はポイだ、ポイ。
>>634 perl -e 'my $a="STDERR";print $a("aaaaa");' >/dev/null
aaaaa
おお、ほんとだ。納得しました。
まともな精神構造してたら他人に質問するのにこんな態度はとらんよ。
親がキチガイなんだろう。
まともにガキ1匹教育できないクズが性欲にまかせてガキ作ったのがこの結果。
>>623 の親は社会のお荷物。
>>643 まともな精神構造なら、もし真摯に質問してきても偉そうな態度で答えたりしない
>>641 出力先がSTDERRだから表示されるけど、
なぜ一々標準出力を /dev/null へ捨ててるのかが意味不明。
笑えるほど何か、いちいちツッコミ所があるな
647 :
623 :2012/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")は関数呼び出しに見えますが、その辺をうまく解釈してくれようとしていたのですね。
ありがとうございました。
>>646 STDOUTへの出力じゃないことを強調したかったんで…
>>647 こちらこそ申し訳ないです
老婆心ながら、コードの可読性的に$fhと()の間は空けた方が良いですね
>>647 無事に動いてよかったよかった^^
謝らなくてもいいよ、ゴミの下げる頭には何の価値もないから^^
解決したならこれでもう二度と来なくていいね^^
荒らしたかったらまたいつでもおいで^^
653 :
デフォルトの名無しさん :2012/02/12(日) 19:22:43.94
>>647 自分の書き込みのせいで荒れてるって自覚あるのにまだ書き込んでるのかこの基地害
>>649 荒らし目的で釣り質問してるのに
可読性のいいコード出すわけねえだろバーカ
誰か
>>648 に対するまともな揚げ足取りが思いつかないんでお願いします
>>655 その説明でやりたい事の意味がわかったから、
いちいち間違いがないか確認しなくていいw
>>623 はパソコンの前で腹抱えて笑ってるんだろうな、
ほんと糞だわ
釣りでェーーーーっす!!! バカが大量で今日も飯がウマいでーーーす!!! プププププ!!!
>>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;
>>659 素晴らしい
こういうモダン風への書き換えは参考になります
やっぱりモダンのほうが見やすいね。
662 :
デフォルトの名無しさん :2012/02/12(日) 21:17:40.76
printでデバッグログを大量に出してるのですが、オンオフしやすいようにdbgPrint(名前は適当)にそのまま置換して、 sub dbgPrint() {print @_ if ($debug);} とか書こうとしたのですが、上手くいきません。すごく基本的なことだと思うのですが、 こういうことをしたいときはどうすればいいでしょうか。よろしくお願いします。
sub dbgPrint {print @_ if ($debug);}
>>662 Sys::Syslog、Log4Perlあたりを使えば、
簡単にデバッグログのON/OFFや
出力先の切り替えができる。
665 :
デフォルトの名無しさん :2012/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]++; } } } } }
>>662 >うまくいきません
↑どううまく行かないのか分かるわけないだろクズ
お前の見た画面が分かるわけないだろキチガイ
レスいらないからとっとと失せろ
669 :
デフォルトの名無しさん :2012/02/12(日) 21:41:08.31
>ゴキブリ
これ最近流行ってんの?
>>662 の頭がそのレベルってのは同意だけど
>こういうことをしたいときはどうすればいいでしょうか。 本10冊くらい買ってきて読めば?
671 :
662 :2012/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");
>>671 もうおまえ来なくていいから
独り言ならブログに書いてろゴミ
もうちと詳しく言うとsub文での()は「引数とらない」て意味 むしろ定数宣言で使われることが多い
>>662 なんでロクに質問の仕方も分からないヴァカがここにいるの?
676 :
662 :2012/02/12(日) 21:59:37.59
括弧を付けてないprint呼び出しがほとんどなので、いちいち括弧をつけるのは大変です。 なにか良いやり方はないでしょうか? sub宣言時の括弧はこれからやめます。ありがとうございます。Log4PerやSyslogも見ましたが 自分の目的にはちょっと大げさすぎるようで。でもありがとうございます。
677 :
662 :2012/02/12(日) 21:59:47.59
サブルーチンの呼び出しには()
678 :
デフォルトの名無しさん :2012/02/12(日) 22:01:09.77
>>676 use CMDMessage;
$dbg = new CMDMessage;
$dbg->output('on');
$dbg->message('デバッグメッセージ');
とか使えば?
低レベルな問題を解決できず、 解決方法が分かったし、とりあえず釣りにして行こう的な流れ。
何この頭の悪すぎる
>>662 必要な情報出さずに質問したうえに、レスがついてから情報出してくるとか
回答者のこととか全く考えてないな。
人格障害じゃね?
683 :
デフォルトの名無しさん :2012/02/12(日) 22:24:30.60
このスレは質問がなければ存在価値がないんだよ わざわざ質問してやってるこっ人に感謝しろ糞共が
>>683 一番存在価値がねーーーのはオメーだよオメー
さっさと消えろ人糞
Perl(笑)
@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 :2012/02/12(日) 22:55:33.91
やっぱりPerlでprintを使うときは括弧を付けたほうが後々いいということですかね。
教材に最適です。頂戴します。
691 :
デフォルトの名無しさん :2012/02/13(月) 03:35:57.87
荒らすだけが目的の奴が最近ちょろちょろとじゃまくさいな。
お前のことか。 そうやって煽り文句書いて自演で荒らすんだろ。 気持ちわりぃ。
696 :
デフォルトの名無しさん :2012/02/13(月) 21:10:05.86
うるさいゴミ
荒らしというより自分にとって都合の悪い話は全部荒らしに見える精神障害の一種 最近は自己中な精神構造から発症するうつ病患者がいるらしいし、その類
699 :
694 :2012/02/13(月) 21:56:32.08
ちなみに俺が荒らしと思うのは
>>695 >>696 >>698 あたり。いずれもたぶん荒らし兼自己紹介だな。
前みたいにコテハン使ってくれればいいのになあ。そうすればあぼーんしやすいのに。
自己紹介乙 コテ付けてくれ
701 :
デフォルトの名無しさん :2012/02/13(月) 22:03:55.44
しばらく書き込みもなくて落ち着いてるところに荒らしがどうのと燃料投下してる辺りどう見ても荒らしです。 お疲れ様でした。
>>699 ← 昨日の夜中から荒らすネタがなくて自演で無理矢理荒らし兼自己紹介を始めた人です
なんだ、自己紹介だらけで礼儀正しいいいスレじゃないか。
>>699 は俺じゃない。
人のレス番騙って荒らすとかタチが悪いな。
709 :
694 :2012/02/13(月) 23:05:20.54
>>708 偽物はお前だろ、死ねゴミクズ。
人に迷惑かけないように行方不明で死ぬんだぞ。
お前は生きてるだけで迷惑なんだから死ぬときくらい迷惑かけるなよカス。
質問も何もきてないのにいきなり荒れててワラタw
711 :
デフォルトの名無しさん :2012/02/13(月) 23:49:13.47
712 :
694 :2012/02/14(火) 00:09:53.24
すげえ。いつのまにか俺が3人もいる。
713 :
694 :2012/02/14(火) 00:10:50.66
11人いる!
>>694 は何でわざわざこのスレ選んで荒らし始めたんだ?
Firefox のクラッシュは、Firefox 本体の不具合に限らず、外部のプログラムによる干渉、想定外のデータの読み込みや操作によって引き起こされます。 特に、Firefox と連携するプログラム (アドオンなど) や想定外の動作をするスクリプト、悪意のあるソフトウェア (マルウェア) が原因の多くを占めます。 Firefox 本体の不具合がクラッシュの原因となっている場合、たいていは最新版で修正されています。 まず、Firefox を最新版へ更新してください (初期設定では自動的に更新されます)。 Firefox を更新しても引き続き Firefox がクラッシュするようであれば、Firefox 本体の不具合ではない可能性があります。 このトラブルシューティングでは、そうした際に考えられるいくつかの原因と解決策を紹介します。
>Firefox 本体の不具合がクラッシュの原因となっている場合、たいていは最新版で修正されています。 たいていとかいう単語が出てくる程頻繁にクラッシュするゴミブラウザ誰が使うんだよ 使ってるのは一部の情弱だけなんだからいちいちコピペするな
>>714 さぁ、仕事でもクビになったんじゃね?w
以下の二つのコマンドで出力結果が異なるのはバグでしょうか。 perl -MPOSIX=strftime -le 'print strftime ("%s", localtime)' perl -MPOSIX=strftime -le 'print strftime ("%s", gmtime)'
localtimeやgmtimeが返す値にはタイムゾーンの情報が含まれていなくて、 strftimeの%sはTZ環境変数に基づいて年月日時分秒を解釈するからそうなる。
日本からの資金援助 ・6000億ドル(併合から終戦まで)1965年 ・8億ドル+α(経済協力金) 1965年 ・40億ドル (特別経済協力金) 1983年 ・100億ドル (通貨危機救済金) 1997年 ・200億ドル (ウォン高救済基金)2006年 ・300億ドル (ウォン安対策IMF、韓国に2.8兆円融通)2008年 その他、2002日韓ワールドカップのスタジアム建設費の融資した300億円は未返済 ・併合に反対だった伊藤博文を親日派の安重根が暗殺した結果、併合が決定的となった ・朝鮮内部で親清派・親露派・親日派などが争い、親日派が勝った結果、望んで併合された ・従軍慰安婦は強制ではなく職業売春婦であり、下士官以上の収入を得ていた ・強制連行はほんの数十人で、大多数は仕事を与えてもらったか、自ら求めてやってきた出稼ぎ労働者か密航者 ・創氏改名は日本で働く際に差別されないため、日本人の名前を自ら望んだ(※改名しない人もいた) ・創氏改名によって下層階級者がこぞって名門姓である「金」を名乗ったため、「金」が多数派となった ・併合後、日本によって教育やインフラへの投資が行われ、生活水準が著しく向上した ・韓国の発展は日本からの援助や併合時の置き土産(約60兆円)がなければ有り得なかった ・戦後、李承晩という独裁者が自衛隊発足前の日本から竹島を奪い取った ・日本から預かった北朝鮮への賠償金や援助金は韓国が使ってしまった ・上記の日本からの援助及び、北朝鮮への援助を使ったことを国民に正確に説明していない ・出稼ぎ労働者や密航者である同胞の在日韓国人・朝鮮人を引き取りもせず、日本に押し付けている
721 :
デフォルトの名無しさん :2012/02/14(火) 15:53:35.47
>>718 何でもかんでも開発環境のバグにするなよゴミ
バグってるのはお前の頭だろ
>>718 何でPerlの仕様も読まずに質問してんだ池沼。
723 :
デフォルトの名無しさん :2012/02/14(火) 17:26:16.62
Firefoxってバグ直さずバージョンだけ上がっていく伝説の糞ブラウザか
724 :
デフォルトの名無しさん :2012/02/14(火) 18:19:09.88
>>723 糞ブラウザって言うとブラウザみたいにきこえるぞ
あれはただの産廃だよ
726 :
デフォルトの名無しさん :2012/02/14(火) 20:23:56.20
>>725 よう、糞
元気か?
頭の調子はどうだ?
朝鮮人がわいとるのー
ちんちんかいかい
>>722 POSIX仕様はPerl仕様の範疇に無い。
更に%sは拡張仕様。
連想配列の中の値が全部空文字列だったときにループを飛ばすような処理を考えて next if !grep { $_ ne q{} } values %hash; というような書き方をしたんだがどうも直感的じゃなくてパッとしない。 どう書きなおせばいい? サブルーチンに出して適切な名前つけるべき?
>>732 next if '' eq join '', values %hash;
パッと思いつくのはこれくらいかなぁ
特に見やすくなったとは思えんが・・・
サブルーチン化するかコメントでも書いておくのが正解じゃね
>>733 ありがとう。joinは盲点だった。
とりあえずサブルーチンにしといて
%hashをメンバ変数にしたクラスのメソッドに移すよう
TODOリストに加えとくことにするよ。
こーゆーのって結局おざなりになっちゃうわけだけど……やれやれ。
>>719 >localtimeやgmtimeが返す値にはタイムゾーンの情報が含まれていなくて、
含まれていないにも関わらず、strftime の結果が異なるのは、strftime は
引数の値を見ているのではなくて、引数部分に記述されているのが何かを
見ているってことなの?本当なの?
>strftimeの%sはTZ環境変数に基づいて年月日時分秒を解釈するからそうなる。
737 :
デフォルトの名無しさん :2012/02/15(水) 01:58:05.42
マジカルインクリメントってひらがな対応してたのかよwwwwwwwwwww はやく教えろよwwwwwwwwwwwwwwwwwwww
>>732 読みやすさとは関係ないけれど、hash が大きい場合は、grep だと最初の一個が
空でなかった場合でも全部なめてしまうので、効率よくないよ。
>>722 つか、localtime/gmtimeの概念はPerl誕生よりず〜っと前からあるよ
>>732 use List::MoreUtils qw(all);
next if all { $_ eq q{} } values %hash;
742 :
デフォルトの名無しさん :2012/02/15(水) 12:59:47.65
もういいです
strftimeは引数を無視して、自分でtime関数を呼び出してTZ環境変数に 基づいて年月日時分秒を解釈するんですね。とても勉強になりました。
744 :
デフォルトの名無しさん :2012/02/15(水) 22:39:16.33
結局ファイルの行数を得るにはどの方法が一番いいんだよハゲ
wcでも呼んどけタコ
「一番いい方法」なんてのはない。 好きな方法でやればいい。 それがTMTOWTDI。
ただ公式faqでの回答はゴミだから参考にしてはいけない
>>743 strftimeの%sがタイムゾーン分の秒数を引いてるだけじゃない?
私の手元の環境の実装だと、そんな感じだった。
うん。
>>743 の人は何かひどく誤解してるようなんだけど、
何をどう誤解してるのかがよくわからない。
韓国人アイドルグループ「GREAT」が歌手活動に必要な在留資格を得ずに活動していた事件で、警視庁組織犯罪対策1課と新宿署は
15日までに、入管難民法違反(資格外活動)容疑で、20〜27歳の男性メンバー5人を書類送検した。事情を知りながらグループを来日
させ活動させた同法違反のほう助容疑で、ライブハウスを実質的に経営する韓国籍の男性社長(48)=東京都新宿区=も書類送検した。
同課によると、メンバー5人は容疑を認め、社長も「デビューしたてのグループが日本で売れれば、見返りが入ると思った」と認めている。
.
http://news.livedoor.com/article/detail/6281304/
751 :
デフォルトの名無しさん :2012/02/16(木) 21:11:43.94
牛丼クレープ
752 :
デフォルトの名無しさん :2012/02/17(金) 12:38:31.97
$s =~ s/hoge(\d+)/ /g; みたいに"hoge数字"グローバルに置換して、マッチした数字部分を全部取得する方法ってある?
grepで二度手間を試みる
my @match; $s =~ s/hoge(\d+)/push @match, $1; " "/ge;
得意満面の s///ge 内の push。
何か変?
んにゃ、きわめて真っ当。
>>754 ていうか
push @list, $1 while s/hoge(\d+)//;
って書きこみしようとしていた。
ホントPerlは勉強には事欠かない言語ってことを再認識した
761 :
デフォルトの名無しさん :2012/02/18(土) 17:50:37.78
test_dataディレクトリにいろんなログデータが入っていて 管理モードを作って、このディレクトリ名をrenameで変更したいのですが test_dataディレクトリの中にあるファイルに誰かが書き込んでいるとき ディレクトリ名を変更するとデータが消えたりするんですが それを回避できるいい方法はないんでしょうか? ディレクトリ全体をロックすると重くなるのでそれ以外の方法でです
>>761 $ chmod 700 test_data
$ mv test_data [好きな名前]
$ chmod 777 [変更した名前]
763 :
デフォルトの名無しさん :2012/02/18(土) 19:52:25.24
>>762 その方法でディレクトリ名を変更すると
変更前の現在書き込み中のファイルは途中で書き込みが中断されますか?
OSは秘密ですか。そうですか。
>>763 試してみればわかるんじゃないかな?
これはOS依存になると思う、Ubuntuで試した所・・・
書き込み用にファイルを開いているタイミングでパーミッション変えても書き込みは続行する。
次の書き込みからファイルオープンができなくなる。
766 :
デフォルトの名無しさん :2012/02/18(土) 20:15:06.30
windows7でactiveperlなのでUNIXコマンドはできないです
>>766 もう、スクリプトを止めたら?
ディレクトリの名前を書き換えて再開すればいいんじゃね?
windowsだとオープンしているファイルがあるとディレクトリ名の変更が出来ないから、 test_dataディレクトリのファイルをいじるときはダミーのファイルをオープンする。 管理モードではディレクトリのリネームが成功するまでリトライする。
つtechnet.microsoft.com/ja-jp/library/cc771672(v=ws.10).aspx
mkdirで排他用のディレクトリを作る このディレクトリがある間は、それ以降test_dataの中のファイルにアクセスできないようにする この排他用ディレクトリができる前にtest_dataディレクトリの中のファイルに書き込んでいるプロセスがあるかもしれないので sleepで10秒くらい待ってからrenameでtest_dataディレクトリ名を変更すれば その書き込んでいるプロセスも終了しているだろうから安全にrenameできるだろう
もうperlに閉じた話じゃなくなってるな。OSがらみ。
772 :
デフォルトの名無しさん :2012/02/19(日) 02:39:57.73
スキルがなくて2chで質問するような低能は込み入った作業をしなさんなってこった
perlでは「"0"」が偽と判断されてしまうようなんですけど、 「"0"」を真と見なすには、「length("0")」とするしかないでしょうか。 みなさんどうされてますか。
そのために defined があるんでしょつりですね
775 :
デフォルトの名無しさん :2012/02/19(日) 17:45:34.24
お前の頭の中のアルゴリズムに問題があるだけだろ if ( $a ne "" )
! を使う
そのアイディアにはびっくりしました
びみょうにバグってますね 正しくは if ( $a eq "0" )
779 :
デフォルトの名無しさん :2012/02/19(日) 18:05:00.58
780 :
デフォルトの名無しさん :2012/02/19(日) 18:24:34.77
うるさいゴミ
なに?作文?
782 :
デフォルトの名無しさん :2012/02/19(日) 19:14:41.97
>>773 文字を数値として比較しようとするからだろ基地害
お前まじでプログラミング向いてないから失せろ異常者
perlでは変数に値を代入後、格納したものが文字列なのか数値なのか の情報が失われてしまうようなんですけど、どちらが代入されたのか 調べる方法があるのでしょうか。 みなさんどうされてますか。
>>783 ↑
C言語もやったことのないようなゴミがこういうレスするんだろうな。
自分が格納した値の型も忘れるような痴呆は回線切れよ。
>>783 おいアホ釣り針がお前のアレなみに小さいぞ
>>783 ないよ。Perlはじゃんじゃか動的に型付けするから。
文字列か数値かで処理を分けたいなら同じ変数に入れるべきじゃない。
具体的に困ってるコード見てみないとアドバイスできないけど。
(($_ ^ $_) eq '0') ? print "$_: numeric\n" : print "$_: string\n" for (1, '1'); 1: numeric 1: string
>>783 評価の仕方で、文字だったり数字だったりでPerlさんが自動で判断してくれる。
文字とかも数字として評価する事もできるしな。
790 :
デフォルトの名無しさん :2012/02/19(日) 23:22:25.60
>文字とかも数字として評価する事もできる 馬鹿の書いたソースでよく見かけるね
utf8フラグがONになっているものが文字列。
792 :
デフォルトの名無しさん :2012/02/20(月) 00:57:52.14
数値比較だと空データは0として見なされる
($_ ^ $_) =~ /^\x00*$/ でもいいか
>>789 > 評価の仕方で、文字だったり数字だったりでPerlさんが自動で判断してくれる。
> 文字とかも数字として評価する事もできるしな。
このへんがperlの便利でもあり厄介でもあるところ。
まあ慣れれば便利なことの方が多い。
>>788 これはどういう仕組みなんですか?うまく動いたのですが、つまり同じ数値をxorした結果
'0' = ビット列00110000になっているという事ですよね。
調べたらperlは文字列にビット演算することができてその場合はasciiコードとして演算されるとの事でしたが、
文字列でも数字でも同じ物をxorすると0になり、結果は同じではないかと思いました。
>>795 同じ数値同士のXORは数値の0
同じ文字列同士のXORは文字コード0 つまり "\x00"
>>788 の ($_ ^ $_) eq '0' は
$_ が数値なら 0 eq '0' で、文字列値なら "\x00" eq '0'
あとはわかると思うけど、eq は文字列比較なので前者の場合は左側の数値 0 は文字列 '0' に変換されてから比較されて、結果真になる。
>>798 はぁ〜〜なるほど、分かりました。
文字列同士のXORで得られた数値は文字コード(という表現が適切かどうかは分かりませんが)として再評価されるんですね。
分かりやすい解説レスありがとうございました。
× /2^798 ○ /2^796 失礼しました
799 :
788 :2012/02/20(月) 19:40:36.19
まぁ、パズルに近いけどね。 破壊的な変数の利用を避けるべきなら、 破壊されやすい変数の利用も避けるべきで。
800 :
age :2012/02/20(月) 21:14:30.39
webクローラのgunghoモジュール がどうしてもインストールできない POEエンジンインストールのところで(POE::component::*)エラーになる 解決策教えて それか別のperl高性能クローラ教えて
癌呆の略字を知らないモグリかよ
802 :
デフォルトの名無しさん :2012/02/20(月) 21:22:16.89
馬鹿には無理
803 :
age :2012/02/20(月) 21:39:20.56
そんな子といわずに教えて
恥かしくてもう出てこられない785-787。
標準入力を最後まで読み取る必要があるんだけど処理はしない。 とりあえず while (<>) {} とか書いてるが、もっとスマートな書き方ないかな?
処理しないんなら読みとる必要も無いだろ
なんらかのプログラムの出力を吐ききらせたいとかそういうのじゃないのかね
^Dだか^Zが来るまで読み捨てたいのかね。 @_ = <>; とか。スマートとは思わんが。
809 :
デフォルトの名無しさん :2012/02/21(火) 02:26:19.84
低能は黙ってろ
プロさんちーっす 0 while<>; はどうかと思った
>>806 procmailのフィノレター書いてるですが、最後まで読んでやらんと
パイプ新だがなって怒られるんです(´;ω;`)
>>808 それメモリ喰らいません?
undef = <>;的な書き方ができたらウフーだなとかオモテますた。
>>809 ごめんなさいぃぃぃ
>>810 かっこぇぇ惚
(undef) = <STDIN>; () = <STDIN>;
>>813 ウフー! ウフー! ウフー! ウフー! ウフー!
自分の中ではこれFAなりでマジ惚れ危険!
さんきゅーさんきゅーありがとベリーマッチ
関係ないけど皆さんやっぱ<>より<STDIN>推奨?
この場合は読み込み元が標準入力じゃないと成立しないんだから、 @ARGV の有無で読み込み元が変わる <> よりも <STDIN> のほうが間違いないでしょ。
確かに相手が自前じゃないわけだし、なに食わされるかわかんないですもんね… 本当に遅くまで、もとい早朝までありがとうございました。真剣感謝です。
そんなトリッキーな書き方が許されるのは中学生までだよねー
perlのどこらへんがトリッキーじゃないんだ 奇をてらいたくなきゃあ別のクソでもいじくりまわしてろ
>>818 全部トリッキーに見えるのか。
どうかしてるよ、お前。
>>818 Perlごときで挫折したプログラミング不適格者の、典型的な言い訳だな。
体育会系会社に入って営業でもやってろw
(<>);
(i)
トリッキーではないわけね
>>824 アホか?
フトンの中でクソしてさっさと寝ろよ
フトンの中でクソなんて発想が許されるのは三歳(さんちゃい)までだよねー
×さんちゃい ○ちゃんちゃい
('<>')
while ( my $hoge = shift @argv )やwhile( my $it = $it->next) ってそのうちundefになって終了するはずなんですが、 while(defined( my $hoge = shift @argv))のようにdefinedを使ってるコードが多いように思います。なぜなんでしょうか。
>>829 @argvの中に数字の0とか空文字が入る場合、前者だとそこで止まっちゃう。
あとイテレータに最後のundefがあるとは限らないよ。
833 :
デフォルトの名無しさん :2012/02/24(金) 13:13:11.47
うるさいゴミ
>>833 なるほど、自分がついて行けない話の時はそうなるのか
産廃並みの脳味噌だなw
perl -E '@a = <STDIN>; eval "@a"' これをもっと短くすることをお願いできないでしょうか?
>>835 何がしたいのそれ
echo 'print "foo";' | perl
選択中のテキストに対してシェルコマンドを実行する事が出来るアプリ(Meadow)を使って perl -pel "s/hoge/ほげ/" というような感じのことをしてみたのですが perlスクリプト書いて選択して実行してみたいなと思ったところです。perl だけでは動きませんでした。 今はこうやってます。(少し短くなった) perl -e "$/=undeff; eval <>"
パッパッパパッパぁ〜Perlライス
>>839 Linux上ではperlだけで動くので多分WindowsとMeadowのせいなんだと思います。
わざわざ調べてくださってありがとうございます!
841 :
デフォルトの名無しさん :2012/02/25(土) 19:21:23.07
文字列を8もじずつ分割して配列にしたいんだけど どうしたらかっこういいですか?
そのかっこいい方法は、 最速ですか?
843 :
デフォルトの名無しさん :2012/02/25(土) 19:56:46.61
>>842 格好いい=最速、最速=格好いい
昔から決まってんだろ
最速の方法は、 文字へのポインタを8づつ増加させながら 配列に加えていく方法だろうね。
my @div = $str =~ /.{1,8}/g ; これ以上短くできンの?
できたよ。 関数作ればコードも短く 意味もわかりやすくなる。 my @div = splitn($str,8);
>>847 それってホントに動作の意味が分かりやすくなんの?
関数のホントの意味知らないと、動作が絶対に分からないような作りになってね?
分かりやすいってのはウソで、実はそれ、説明性が低いだろ。
my @div = unpack('(A8)*', $str);
>>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
perlのマニュアルでわかりやすいのってある? 省略したときに$_とか$@を使うのか 引数の中身を破壊するのかしないのか 戻り値が$_とか$@に入るのか ってのがいつもわからない
以下の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";
printfで文字列に全角文字が混じった時に、 全角は2文字分の幅として認識させるにはどうすれば ぐぐると、やたら面倒そうなのとか、根本から変えちゃうようなのしか見つからない
>>853 罫線問題もあるので、極めて難しい超難問ですお
じゃあ、罫線は無視で
罫線問題って呼び方は聞いたことないけど、「曖昧な文字幅」の扱いのことだよね。 Winユーザでもギリシャ文字が場合によって半角だったり全角だったりなんてのは見たことあると思うけど。
ハングルは半角か全角か
こんなのでよくね? 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
>>852 俺の環境(Ubuntu)では文字化けしなかった。
cp932の所は環境に合わせるためにutf-8に書き換えたがな。
ってか、ちゃんと文字のencodeとdecodeを理解するべきだろ・・・
魔法のおまじないのように「binmode STDERR, ":encoding(cp932)";」こういうの使わない方がいいと俺は思うけど。
decode('cp932', sprintf("%-10s", encode('cp932', $str) ) ); 結局、こんなんにしました
>>860 なんとひどい・・・
無駄なオーバーヘッドかかりまくり・・・
センスの欠片も感じられない、もっと本読めマジで本読め
>>861 我流でやってきたので・・
おすすめの本があれば教えて下さい。
863 :
デフォルトの名無しさん :2012/02/26(日) 15:45:40.64
>>862 自分で探せゴミクズ
そうやってすぐ他人にきくからゴミみたいなコード書くんだろ
ゴミコードをネットで晒して恥ずかしくないとか頭の中どうなってんだこの基地害
お前がどんなにゴミだクズだと罵ったところで、
>>862 は人として最低限のプライドもないから無駄だよ。
バイナリでいいやん
>>862 俺が読んでた本は、もう随分古い本だからな・・・
同じ本を薦めても情報が古過ぎる、新しい情報はネットから得てるし
amazonで適当に探して評価読んで良さそうなのを一冊見つければいいんじゃないか?
ネットからは得られないぞ 入門の情報はネットで十分だけど、ノウハウ的なものは金を出さないと得られない
応急の策としてなら
>>860 は別にそれほど悪くない。
速度的にもutf8のまま真面目にFULLWIDTH/HALFWIDTHを判定していくよりは速いぐらいかもしれない。
漏れが一切無いというのが安心できるな シフトJISの時と全く同じ動作を得たいなら、シフトJISにするしかない
入力も出力もシフトJISなら処理もシフトJISで行ったほうがいいでしょ utf8に変換する必要性ないでしょ
クソ性器表現のため処理はutfだろふざけんなks
もう頭痛くなってきたw いい感じにひどいですね
873 :
デフォルトの名無しさん :2012/02/26(日) 17:31:21.20
うるさいゴミ
>>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";
ピログラムも知らないど素人向けでもないのにマルチバイト文字でメッセージ出す奴は基地害
876 :
874 :2012/02/26(日) 18:01:58.62
それと多分、 open STDOUT, ">", "./test.txt" or die "ファイルが開けません: $!";
そこでjperlなわけか
878 :
852 :2012/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での挙動があやしいということなのかもしれません。
アホかよ…… cp932なんだからwinでためさねーと意味ないじゃん
880 :
874 :2012/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を入れると直るね。
cp932でエンコードしたものをもう一度cp932でエンコードしようとしているんだから上手く動かないのは当然じゃないの?
だから初心者はjperl使えと口が酸っぱくなるほど、、、
883 :
874 :2012/02/26(日) 20:20:55.64
cp932で二重エンコードは単なる間違いだけど、 utf-8で二重にやっちゃうのは頻繁に見る そしてフラグを剥がして解決する
utf-8で二重にやっちゃうのも単なる間違いだからw
そろそろ1レスでわかるやつがペーストされるいよかん。
encode済みの文字列をencodeできてしまうのはフェイルセーフが欠如してるとしか思えんな フラグ見れるのにそれ見ないんだぜ?
そんなもん言語仕様でどうにかしろよ
言語仕様までいかなくてもEncodeモジュール側でなんとかできそうなもんだが… 問い合わせてみようかな
それよか、ひとくるみしたらどうだ?おれならそうする
>>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
生成しました
甘やかすな 二重encodeは問答無用で青画面
Win95並みのクソOSだなそれ
とはいうもののクソの口から本当の楽の仕方は出てこない、
書かれることもない、
なぜなら
>>894 の能力が低いから
use utf8を書かないとうまく動かない時ってどんな時だ?
>>896 ASCII 以外が必要なほぼすべての時。
898 :
デフォルトの名無しさん :2012/02/27(月) 13:52:22.69
>>895 それめっちゃ分かる。
お前の能力めっちゃ低いもんな。
899 :
デフォルトの名無しさん :2012/02/27(月) 14:04:23.67
なぜなら俺はイタリアンじゃないから
アクセス解析で環境変数を取得するときに、リファラーに井桁が入ってると変数に代入されず リファラーが取得できなくなってしまうのはどうすれば解決できますか
>>901 誘導ありがとうございます。失礼しました。
903 :
デフォルトの名無しさん :2012/02/27(月) 20:14:14.61
勢いを見てもこのスレがPHPより人気なのが分かる
904 :
デフォルトの名無しさん :2012/02/27(月) 20:16:12.30
つーかPHPの質問スレ自体がなくてワラタw PHP厨はこの世に存在しないのと一緒w
普通にたくさんあるだろ
906 :
デフォルトの名無しさん :2012/02/27(月) 20:23:33.91
それがなかったんだよw バトルロワイヤルとかHello Worldを書き込むとかそういうスレしかなかったwww
907 :
デフォルトの名無しさん :2012/02/27(月) 20:24:47.12
>>905 つーか一覧でCtrl+Fですぐ調べられるから見てみろってwwww
【Perl,PHP】LLバトルロワイヤル21【Ruby,Python】 【perl->php】お願いがあるんだ PHP使ってる奴らが憎いPerl>>>PHP PHPを使って2ちゃんねるにHello Worldを書き込む php使ってる奴はアホ、これからはRuby on Rails! すさまじい 怨念が渦巻いている
やっぱりPerlだよな。 PHPとか言語仕様が糞なうえにセキュリティホール付でリリースするからマジないわ。 ゴミすぎてPerlとの比較対象にすらならない。 PHP選んでるって時点で情弱。 馬鹿にされたくなかったらPerlを選んでおくべき。
>>909 「セキュリティホール付でリリース」
コミュニティーがたよりない
PHPにはだんこがいみたいなひといるの?
913 :
デフォルトの名無しさん :2012/02/28(火) 00:05:00.57
914 :
デフォルトの名無しさん :2012/02/28(火) 00:43:21.62
>Perlでこういうサイトって作れますか?
>
ttp://findrjp.com/formen/ お前は言語を何だと思ってんだ?
PerlだろうとCだろうとC++だろうとシェルスクリプトだろうとできるだろ。
>これはPHPだと思うんですけど
「思う」じゃねーよ、Perlだったらどうすんだ?
>作るとしたらelsifで作る感じでしょうか?
そりゃ条件分岐くらい使うでしょうよ。
>こういうのってすぐ作れますか?
すぐの意味が分からないが仕様書出してもらえれば寝起き2時間で作れるよ。
文字通り朝飯前。
916 :
デフォルトの名無しさん :2012/02/28(火) 01:36:50.46
>>915 PHPとかperlってどこで判断するんですか?
結果ページのurlにはphpって入ってますけど
死ねよ上げんな池沼
>>916 鯖管に聞かなきゃ分からない
一つの言語だけでできてるという保証もなし
精度向上がどうのって書いてあったから
バックエンドではcで書いたややこしいシステムが動いてるかもよ
ひとつ言える事は・・・ 吐いてるHTMLは死ぬほど汚い、素人が作った物だろって事。
寝起きで朝飯前食う前にやっつけで作ったんじゃね?
ステマそのものじゃねーか。つまらん。
922 :
デフォルトの名無しさん :2012/02/28(火) 18:33:03.38
CGIの話はWebProg板でやれゴミ
923 :
デフォルトの名無しさん :2012/02/28(火) 19:56:56.41
924 :
デフォルトの名無しさん :2012/02/28(火) 20:59:01.76
バーカ
925 :
デフォルトの名無しさん :2012/02/29(水) 21:56:03.52
阿呆
926 :
デフォルトの名無しさん :2012/02/29(水) 22:01:52.56
$a = time; for( $i = 0; $i < 10000; $i++ ){ $x = $x + 1; } $b = time; $c = $b - $a; print "$c";
my $a = time; my $x = 0; $x += 1 for 0 .. 9999; print time - $a, "\n";
ミリ秒まで計測できるよう改良してあげたぞ 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";
文字列を改行つきで表示させたいとき、 print "$c\n"; print $c ."\n"; のどちらが良い方法ですか? 個人的には上の方法が好きですが、特に理由はありません。
>>929 俺は下の方が好き。
Perlは変数がダブルクォートの中にあっても展開してくれるけど、
他の言語では展開しない物の方が多い。
Perlでいう全部シングルクォートと同じ感じ。
気持ち悪いから下の方法を取ってるだけで、それ以上深い意味はない。
print文ならむしろカンマを使うね print $c, "\n";
. で接続すると、括弧が余計に必要になったりするから嫌
好みって事で、どうでも好きにしろよ
print "$c\n"; print $c ."\n"; 新たに文字列が作られる。 print $c, "\n"; 新たな文字列は作られない。 したがって,推奨と信じてきたが違うのか?
935 :
デフォルトの名無しさん :2012/03/01(木) 12:30:27.47
mes myText + "\n"
コンマ使えば変数分のメモリが節約できるのか〜 変数の内容にもよるし微々たるものな事も多いだろうけど、 でも少しでも軽くするのはプログラマの努めだし、 軽くするために特にトリッキーな事になってる訳でもないし、 これからは積極的にコンマ使っていくよ教えてくれてありがとう。
938 :
デフォルトの名無しさん :2012/03/01(木) 14:29:44.49
>>937 の内容に可読性に関する話が一切出ていない。恐らく真性の基地害。
保守性を無視した「自分さえ分かれば良い」コードを書くゴミの典型。プログラムをする資格のそもそもない人種。
それでプログラマの努めとか言っちゃってるのは恥さらし通り越して最早プログラマに対して失礼。
ほんとクズだなこいつ。
コンマなんか使うと可読性が落ちる(キリッ
そんなに軽くしたいならPerlやめてCで書けばいいんじゃね?
941 :
デフォルトの名無しさん :2012/03/01(木) 14:48:09.89
@a = (1, 2); print @a . "\n"; print @a , "\n"; みたいな時に挙動が変わる
何だ、この流れ。
>>938 > 軽くするために特にトリッキーな事になってる訳でもないし、
これが可読性に言及していると読み取れないお前は、ディスレクシアの疑いが高い。
専門医の診察を受けることを勧める。
もっとも診察受けても治らないけど、この業界文章読み取る能力が欠如してるとつらいぞ。
この業界はどんな条件でもつらい 自然言語でプログラムが組めるようになるまでは離れるのが吉
可読性の高いトリッキーなコードと 可読性の低いトリッキーなコードあるよな
say $c;
949 :
デフォルトの名無しさん :2012/03/01(木) 15:30:06.89
>>944 は可読性の低いトリッキーなコードしか見たことないんじゃね?
カスども仲良くしろ
>>949 ヒント: 類は友を呼ぶ
>>944 みたいな文章しか書けないような奴が集まってみろよ
その中に可読生の高いトリッキーなコード書ける奴がいると思うのか
何にキレてるのか意味がわからない・・・ そんなにコンマが嫌いなのかw コンマ入ると読めなくなる程度の奴らなのかw
>>949 キミ、多分ディスレクシアだよ。つらいだろうが自分の特性を受け入れる事が大事。
>>951 煽るときは漢字間違えないようにしろよ。あと、お前の過去に何があったか知らな
いが、コンマは噛みつかないからそんなに怖がる必要はないぞ。
そもそもカンマってなんであるんだ?構文解析上必要なのか疑問。(←わざわざカンマで区切らずともスペースで区切られてるだろ) print $s "\n"; これでも十分区切りはわかる。カンマは不必要。ではなぜそうなっていないのか、逆にカンマが必要な場面とはどこか。 print 3 + 5, 8; こういう場合だな。二項演算子が混じってくるケース。カンマを端折ってprint 3 + 5 8とすると区切りが分からなくなる。 ただカンマの代わりに括弧で括ってprint (3 + 5) 8とすればこれで区切りは分かる。カンマは入らない。 項の区切りにカンマを入力しなくていいが、二項演算子使う場合はカッコでくくるコスト>項の区切りに毎回をカンマ入力するコスト だと思うんだが
もうLispとかHaskellやれよ。 なんでPerlだけが噛みつかれるんだよ…
>>954 /: : : : : __: :/: : ::/: : ://: : :/l::|: : :i: :l: : :ヽ: : :丶: : 丶ヾ ___
/;,, : : : //::/: : 7l,;:≠-::/: : / .l::|: : :l: :|;,,;!: : :!l: : :i: : : :|: : ::、 / ヽ
/ヽヽ: ://: :!:,X~::|: /;,,;,/: :/ リ!: ::/ノ l`ヽl !: : |: : : :l: :l: リ / そ そ お \
/: : ヽヾ/: : l/::l |/|||llllヾ,、 / |: :/ , -==、 l\:::|: : : :|i: | / う う 前 |
. /: : : //ヾ ; :|!: イ、||ll|||||::|| ノノ イ|||||||ヾ、 |: ::|!: : イ: ::|/ な 思 が
/: : ://: : :ヽソ::ヽl |{ i||ll"ン ´ i| l|||l"l `|: /|: : /'!/l ん う
∠: : : ~: : : : : : : :丶ゝ-―- , ー=z_ソ |/ ハメ;, :: ::|. だ ん
i|::ハ: : : : : : : : : : : 、ヘヘヘヘ 、 ヘヘヘヘヘ /: : : : : \,|. ろ な
|!l |: : : : : : : : :、: ::\ 、-―-, / : : :丶;,,;,:ミヽ う ら
丶: :ハ、lヽ: :ヽ: : ::\__ `~ " /: : ト; lヽ) ゝ
レ `| `、l`、>=ニ´ , _´ : :} ` /
,,、r"^~´"''''"t-`r、 _ -、 ´ヽノ \ノ / お ・
,;'~ _r-- 、__ ~f、_>'、_ | で 前 ・
f~ ,;" ~"t___ ミ、 ^'t | は ん ・
," ,~ ヾ~'-、__ ミ_ξ丶 | な 中 ・
;' ,イ .. ヽ_ ヾ、0ヽ丶 l /
( ;":: |: :: .. .`, ヾ 丶 ! \____/
;;;; :: 入:: :: :: l`ー-、 )l ヾ 丶
"~、ソ:: :い:: : \_ ノ , ヾ 丶
>>954 新しい言語を作るつもりなら期待してやっても良いぞ
print FILEHANDLE LIST
>カンマを端折ってprint 3 + 5 8とすると区切りが分からなくなる。 分からなくはない コンパイラが8が演算子かどうか調べればいい 見た目が分かりにくくはなるが
このスレ馬鹿が多いなw 晒しage
こういうのを自己言及と言います
カリー化と括弧省略の合わせワザが使えたら、間違いなく地獄を見るな。
perlは文法が適当だからな 括弧で括るけど、気に入らなければ無くてもいい ヒュペリオンよりも適当
$a = 1; print ($a+1)*2 . "\n"; これでいいだろ、と直感的には思うのに、 print (($a+1)*2) . "\n"; こうでないと思い通りには動かない
後者も上手く動いてないだろ。改行文字は出力されない。 ラクダ本曰く関数呼び出しは関数呼び出しのように振る舞う。 print (($a+1)*2) . "\n";これは print (($a+1)*2)で1つの関数呼び出しになっている。#=> 4が出力される その返り値に. "\n"されたものがヴォイドコンテキストで評価される。 #=> "4\n"が生成されて捨てられる
print (($a+1)*2 . "\n"); こっち
つーかそれは print +($a+1)*2 . "\n"; でもできるよね
その+地味に使えるよな。 +演算子は前に項がない場合何もしない、だっけ。
でもトリッピーだよな 何このプラス?、取っていい? って思う 書いた本人が暫く経つと思う 全体を括弧で括るのも、取っていい? って思いがちだけど ぱっと見に異常さがなくて、かつ最もシンプルな書き方がベスト
トリッピーってのは 書いた本人なのに暫く経つとなんで「+」つけたか忘れちゃうようなトリ頭のこと?
英語教材のアレだろ そのわりにはアレだな アレ とりっぴぃ()
# 頭の+は取るな とか書いとけば嫌でも思い出すけど、 意味があってやってることを忘れてると、普通に消し忘れに見えるぞ それほどまでに print は括弧を付けて使わない
@a = ([1, 2], [3, 4]); print $a[0][0]; $b = [[1, 2], [3, 4]]; print $$b[0][0]; どっちが好き?
973 :
デフォルトの名無しさん :2012/03/01(木) 21:59:51.62
うるさいゴミ
これがオレの流法 print $b->[0]->[0]';
print $c, "\n"; のprintの話ではないけど… Perlの前に、AWKがあった。 AWKの場合、 $c "\n" で連結される。 「何もないものを演算子にしてしまうと、/pat/ /pat/がパースできなくなってしまう。 なぜなら、3番目のスラッシュが除算演算子と解釈されてしまうからだ」 『プログラミングPerl改訂版』2000年3月21日オライリー・ジャパン
976 :
975 :2012/03/01(木) 22:15:22.43
>>975 は、p. 610
awkユーザがはまりやすい罠(8.2.3)
結合する時は結合先のバッファを確保して、strcpyすんだよ #include <string.h> を忘れがちだから注意な
ケースバイケースとか状況に依るとか言うやつで 特徴を掴んだ典型例を2つ3つ示せない奴は無能
後ろから詰めていきたいのですが。 ($hoge, $huge, $asdf) = @aryとした場合、リストが左寄せで代入され、要素が不足した部分にはundefが入りますが これを右寄せで代入したいです。 最初のゲスコード ↓ my ($sensen, $sensyu, $konsyu); ($sensen, $sensyu, $konsyu) = @ARGV if (@ARGV == 3); ($sensyu, $konsyu) = @ARGV if (@ARGV == 2); もっと良い感じに出来そうなのですが、皆さんならどのように書きますか? unshift @ARGV, undef if (@ARGV == 2); my ($sensen, $sensyu, $konsyu) = @ARGV; 今はこんな感じにしています。もっと変な方法を教えて下さい。
好みを訊かれてるのにケースバイケースになる奴は、 天気によってコーディングのスタイルを変える
982 :
デフォルトの名無しさん :2012/03/02(金) 01:53:59.72
俺も人に何かきかれたときに、自分のレベルでは太刀打ちできないときはケースバイケースって言ってるよ
40%くらいの確率で「ああ、やっぱそうっすよねー」って丸め込める
でも1対1のときで40%くらいだから、集団の中で使うには分が悪い
>>979 みたいなアグレッシブな奴にバレる
晴れの日にはカラッと見通しの良く可読性のいい気分の良いコード 雨の日にはしっとり上品で丁寧なアルゴリズム、雨の中純白色した傘をさし、しとしとと歩くお嬢様のようにどこか儚いコード
>>980 my ($konsyu, $sensyu, $sensen) = reverse @ARGV;
>>980 my ($sensen, $sensyu, $konsyu) = @ARGV[-3, -2, -1];
Perlのスレッドについて質問です。 メインスレッドで無限ループのスレッドを生成したのですが、 メインスレッドから終了させる方法がわかりません。 下記のような方法では、メインスレッドも死んでしまいます。 $thread->exit(); どうすれば良いですか?
987 :
986 :2012/03/02(金) 04:45:58.41
自己解決しました
なんか、@ARGVを直で書くべきでない気がするので、 shiftを何回も使う以外の方法で、いい感じに引き数を取得する方法は無いだろうか
984の方法があまりにも鮮やかだったから 嫌みでもタレてんの?
> なんか、@ARGVを直で書くべきでない気がするので、 なんか気がすると言われても、他の人はそう思ってないから……
>>988 引数を便利に取得するモジュールいろいろあると思うから探したら?
Getopt つかえば @ARGV はあんまり参照しなくていいじゃん。
バカがこねくりまわし時間とて3行費やして自己満足してるのに リバースで一行、 バカが@ARGV使うなとかワメくのもわかるよ 嫉妬と無能の自己紹介そのものだもん
( ..)φメモメモ