Perlについての質問箱 12箱目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGPerlについての質問箱です
"There's more than one way to do it"ということで
ぱぁるの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc5.2ch.net/php/ )
CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするので
WEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
姉妹スレッド(Perl コーディング初心者質問コーナー Part37@WebProg)
http://pc5.2ch.net/test/read.cgi/php/1093106507/
過去ログは>>2-1001あたり
0153デフォルトの名無しさん
NGNGPAR - Perl Archive Toolkit
JavaのJARのようなツールだが、exeも作成できる。
http://search.cpan.org/~autrijus/PAR-0.85/
0154デフォルトの名無しさん
NGNG>その後はちゃんと串刺してやってる。
ヲイ…
0155デフォルトの名無しさん
NGNG「ちゃんと」の用法がちゃうやろ。
そもそもアク禁されるほどの連アタにならないように「ちゃんと」接続を制御せな。
0156デフォルトの名無しさん
NGNGこんなのあるんですね。
でもこれってperl2exeと同じようなものですか?
0157デフォルトの名無しさん
NGNG貴重な意見<(_ _*)> アリガトォ
GET形式URLへはブラウザからだと取得できるので、
UA名を何かに変えてやってみまつ。
0158デフォルトの名無しさん
NGNGパッケージには触れない(パッケージ名を変えたりしないなど)方が
よいのでしょうか?
0159デフォルトの名無しさん
NGNG逆に、臭いからパックするという考えもアリ
0160デフォルトの名無しさん
NGNG臭いです。
0161デフォルトの名無しさん
NGNGWin32 GUI LoftのDemoは以下のようにコンソールよりGUIで起動できました。
C:\Perl\loft\Demo\FetchURL>perl Fetch.pl
(ppmでインストールした)PAR-0.75で以下のようにexe化を行いました。
C:\Perl\loft\Demo\FetchURL>pp --gui -a fetch.gld -o hoge.exe Fetch.pl
しかしhoge.exeを実行したときに
>par.exe - エントリ ポイントが見つかりません
>プロシージャ エントリ ポイント Perl_Gsv_placeholder_ptr がダイナミック リンク ライプラリ perl58.dll から見つかりませんでした。
と警告ダイアログが表示され実行されませんでした。
私には「何かインストールし忘れてるのかな」と感じただけなのですが、
どなたか解決方法のヒントをいただけないでしょうか。
今は(ppmでは手に入らない)PAR-0.85にアップグレードでどうにかならないかと、
Mkaefile.plやnmakeあたりの使い方を調べています。
Windows 2000
Perl 5.8.2
VC++ 有り
0162デフォルトの名無しさん
NGNG初めて知ったけど、Tkより楽ちんそうだね。
入れてみようかな。
0163デフォルトの名無しさん
NGNG91 1463.730149786665800 368.860556376834380 1094.869593409831400
165 1353.381577247856100 303.768416713978350 1049.613160533877600
こういった内容のファイルから入力しようとしているんですが、readだとバイト数が一定でないため使えません
どういったようにスペースで別れた数値を読み取れるようにできるんでしょうか?
0164デフォルトの名無しさん
NGNGPerlのキホンと思われ
これに枝葉ごてごてつければどうにでも応用が利く
0165デフォルトの名無しさん
NGNG@a=split(...)のかわりにpush(@a, $_) for split(...)というのは
はじめて見たな。どこの芸風だろうか?
0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNGヘンな記号みたいな特殊変数で、レコードセパレーターというか、
行(?)の区切りを設定する変数なかったっけ。
それをスペースにするっていうのはどうよ。
0168デフォルトの名無しさん
NGNGchompしてないところとかなんでもメモリに持ちたがるところとか
0169デフォルトの名無しさん
NGNG1行ずつ処理するんじゃなくて@aに全部ためるのが目的だったということですな。
0170デフォルトの名無しさん
NGNGsplitを使えばよかったのですね、ど素人質問に答えてくれてありがとうございますた。
0171デフォルトの名無しさん
NGNGサンプルデータを見るに、明らかに行指向だと思うんだが
全部ごちゃ混ぜにした後で切り分けんの?
0172デフォルトの名無しさん
NGNGべつにchompぐらいええやん。
0173デフォルトの名無しさん
NGNG>>168
べつにchompぐらいええやん。
0174デフォルトの名無しさん
NGNG0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNG何故にchompいらないと思うのかね。
0178デフォルトの名無しさん
NGNG単なる初心者だろ
0179デフォルトの名無しさん
NGNG( ゚∀゚)彡 chomp! chomp!
⊂彡
0180デフォルトの名無しさん
NGNG0181デフォルトの名無しさん
NGNGびっくりするほどTMTOWTDI!
0182デフォルトの名無しさん
NGNGあのコードなら chomp いらねーよ
0183デフォルトの名無しさん
NGNG0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNGsplit /PATTERN/,EXPR,LIMIT
split /PATTERN/,EXPR
split /PATTERN/
split
Splits the string EXPR into a list of strings and returns that list.
By default, empty leading fields are preserved, and empty trailing ones are deleted.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0186デフォルトの名無しさん
NGNGそれは split によって空文字列のフィールドが生成された場合、
後ろのものは捨てられると言っているだけだ。
print map "[$_]\n", split /\t/ for (
"foo\tbar\tbaz\n", # foo, bar, baz\n
"\t\thoge\t\tfuga\t\t", # '', '', hoge, '', fuga
);
chomp が要らないのは split のパターンが /\s+/ なので改行も
デリミタとして扱われる為。パターンを /\s/ にすれば分かる。
print map "[$_]\n", split /\s+/ for (
"foo\tbar\tbaz\n", # foo, bar, baz
"\t\thoge\t\tfuga\t\t", # '', hoge, fuga
);
print map "[$_]\n", split /\s/ for (
"foo\tbar\tbaz\n", # foo, bar, baz
"\t\thoge\t\tfuga\t\t", # '', '', hoge, '', fuga
);
fail safe や fool proof の為、常に chomp を入れておくのは
悪い選択では無いが、chomp を省くとこういうつまらん部分で
ハマる事もあるのでお勧めできない。
0187デフォルトの名無しさん
NGNG>>17
0188172
NGNGやれいうなら tr/\x0D\x0A//d; 使っとくけど。
0189デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNGご高説ご尤もということで(w
>163に関しては、\nの後の空フィールドは自動的にナイナイされるんだから
別にいいんじゃない?
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNGお前以外に誰に言ってると思ってんの?
0194172
NGNGほ〜このコード自体はUnixでもMacでも窓でも使えるぞ。
ttp://www.din.or.jp/~ohzaki/perl.htm#CRLF_Remove
ココ読んでこいや。
0195デフォルトの名無しさん
NGNGああ。
それ自体はUNIXだろうがMacだろうが使えるだろうよ。
お前こそよく読め。
0197デフォルトの名無しさん
NGNG分からないならもういいよ。
Windowsしか使わないお前自分自身のためのソースなら問題ないしさ。
0198デフォルトの名無しさん
NGNG0199172
NGNG俺がいいたいのはここだ。
0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNG依存して当たり前じゃねーか・・・
そもそも、UNIXで動くPerlはUNIX上で生成したテキストをUNIX上で処理するように作られてんだよ。
Windowsで作られたテキストをUNIXで処理するのをデフォルトなんかで作る訳ねーだろ・・・
わかるだろ?俺の言いたい事が。
0202デフォルトの名無しさん
NGNGchomp より >>188 の方が使いでがあるなあ。
0203172
NGNG別OSから持ってきたデータだとつかえんでしょ?
ソーなったとき仕様で使えませんとでも言うの?
0204202
NGNG「ソーいう仕様です」でまかり通るケースも多いでしょう。
0205デフォルトの名無しさん
NGNGバカ?
0206172
NGNG0207デフォルトの名無しさん
NGNGなんか、もういいや。
その時々の対処でって事で。
0208デフォルトの名無しさん
NGNG別にchompで問題なし。というか、chompでないと可読性下がるんでchomp推奨。
>>194のはいろんなプラットフォームのデータを処理するCGI向けコーディングの話だろ?
0209デフォルトの名無しさん
NGNGなんで回答者がOSに依存しないよう考慮しなければいけないんだ?
使い捨てスクリプトかもしれんのに。
0210172
NGNGあれこれ決めつける発言がウザかっただけだ。(w
0211デフォルトの名無しさん
NGNG>>163のバカ!って事でFA?
0212デフォルトの名無しさん
NGNG気が利いてるなと思う。
0213デフォルトの名無しさん
NGNG適当に削ってくれてる辺りが適当な作りっぽくていい味出してるな
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNGPerlスレに質問するってことは、Perlで処理しようと思ってるわけだろ。
正規表現でテキスト処理ってPerlの使い方の代表みたいに紹介されてると思うんだけど
そういうの全く見たり聞いたりしてないのかな
0217デフォルトの名無しさん
NGNG極端な例。
各フィールド内の改行表現は CR、レコード区切りは LF の CSV 。
binmode DAT;
print DAT (
qq/1,abc\x0Ddef,2,ghi\x0A/,
qq/3,jkl,4,mno\x0Dpqr\x0D\x0A/,
qq/\x0Dstu,5,6,7\x0A/,
);
0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNGそれを「テキスト」と言えるかは微妙。それこそ適材適所だべ。
0220デフォルトの名無しさん
NGNGセル内改行はLFになるよね。
行の区切りはCR LFで。
0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNG個人的には、whileだchompだと云うぐらいなら
てめぇが即レス回答しろや、ボケッ!とか思っちゃうが。
0223デフォルトの名無しさん
NGNGCSVはバイナリファイルだと?
0224デフォルトの名無しさん
NGNGいやまぁ微妙だから「極端な例」なんだけどね。
少なくとも while (<>) { chomp; ... という慣用句なら
問題なく処理できるけど。
あと見落とされがちだが chomp は $/ と連動してるので、
陽に $/ を設定すれば行末で悩む必要は無い。
local $/ = '0';
chomp, print "[$_]" while <DATA>;
__DATA__
102030405060708090
0225デフォルトの名無しさん
NGNG0226デフォルトの名無しさん
NGNG再び質問です。
>>51で同じファイル内のものはたとえ名前(ameなど)が同じでもアルファベットを
表示しないようにするには、どうしたらよいのでしょう。
0227デフォルトの名無しさん
NGNGちょっとは自分で考えてるんか?
0228デフォルトの名無しさん
NGNG妙ちくりんなコードはいったい何なんだ?
どっかに発生源があるんか?
アホウが書いた本がなぜか売れてるとか。
0229デフォルトの名無しさん
NGNGwhile(<>){
s/\s+$//;
}
みたいに書いてる。
0230デフォルトの名無しさん
NGNG0231デフォルトの名無しさん
NGNGいくら考えてもわかりません。
>>18で同じファイル内のものはたとえ名前(ameなど)が同じでもアルファベットを
表示しないようにするには、どうしたらよいのでしょう。
あまり聞きすぎるのも悪いので。
perlの基本的なことは勉強したのですが、まだ慣れていないようです。
プログラムの例が豊富にのっているようなホームページはないのでしょうか?
0232デフォルトの名無しさん
NGNG>>3
0233デフォルトの名無しさん
NGNGおまえCSVファイルって何のことか分かってて言ってる?
0234デフォルトの名無しさん
NGNGPerlの勉強よりアルゴリズムの勉強が必要だと思う
手順を論理的に考える能力が足らないんじゃないのかな
0235デフォルトの名無しさん
NGNGで、foo bar ahoを文字列のリストとして取得するのはどうやるんでしょうか。
my $input = $_;はできても
my @inputs = @_;はできないですよね。
0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNGカンマ区切りテキスト
0238デフォルトの名無しさん
NGNGthx
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNGWin32モジュール使えばいいんですか?
0242161
NGNG根本的な解決方法かどうかはわかりませんがPARのアップグレードを試みたので状況報告です。
(PAR-0.85の)makefile.plを実行してmissingと出たものをppmで追加し、全てloadedと表示されるようにしました。
しかし、Fetching 'PAR-0.85-MSWin32-x86-multi-thread-5.8.2.par' に失敗し、'script/parl.exe'の生成にも失敗しました。
そこで独自にparファイルをダウンロードしたのですが、@INCやMakefile.plと同じディレクトリに置いてもそれを使ってくれません。
parファイルを解凍しての手動インストールは難しそうなので断念しました。
0243デフォルトの名無しさん
NGNGs/\x0d\x0a?$//;
にしてる。
0244デフォルトの名無しさん
NGNGttp://www.bribes.org/perl/ppmdir.html は見たのか?
0245デフォルトの名無しさん
NGNG私も同じようなエラーが出たので
ttp://aut.dyndns.org/par/
から使っているPerlのバージョンにあう
PAR-0.XX-*.parをダウンロードして
手動でインストールした所、エラーが出なくなりました。
(Win2K Perl 5.8.3)
でも、結局、
PAR-0.85はエラーが出てインストールできなかったので、
もしかしたらPerlを最新バージョンにアップするとうまくいくかもしれません。
0246161
NGNG---
>>245 回答ありがとうございます。
今Perlを5.8.2->5.8.4にバージョンアップさせました。
>>244 回答ありがとうございます。
そのサイトは見ていませんでした。
コンパイル済みPARの配布を行っているんですね。
・Perlのバージョンアップ
・ttp://www.bribes.org/perl/ppm/PAR.ppd からインストール
両方行ったところ「pp --gui -a test.gld -o test.exe test.pl」で実行ファイルを作成でき、起動も無事行えました。
具体的な原因は判らなかったもののこれが過去ログとなった時に役立てば幸いです。
本当にありがとうございました・゚・(ノД`)・゚・
0247デフォルトの名無しさん
NGNG情報Thx.
0248デフォルトの名無しさん
NGNGMac 使い?
0249243
NGNG0250デフォルトの名無しさん
NGNGchomp使わないで、
そうする利点がわかってんなら、
それでいいんじゃない。
あーっそって感じ。
0251デフォルトの名無しさん
NGNG0252243
NGNG■ このスレッドは過去ログ倉庫に格納されています