14/02/19 23:36:23.29 .net
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板: URLリンク(kohada.2ch.net))
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
荒らしはスルー推奨。
"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、
Perlの奥深さについて皆で語り合い、追求してまいりましょう。
www.perl.org/get.html
Download Latest Stable Source (5.18.2)
▼前スレ
Perlについての質問箱 61箱目
スレリンク(tech板)
Perlについての質問箱 62箱目
スレリンク(tech板)
2:デフォルトの名無しさん
14/02/19 23:37:34.89 .net
【本】
初めてのPerl 第6版(リャマ)[2012年07月 発行]
URLリンク(www.oreilly.co.jp)
続・初めてのPerl 改訂第2版 [2013年08月 発行]
URLリンク(www.oreilly.co.jp)
マスタリングPerl [2009年03月 発行]
URLリンク(www.oreilly.co.jp)
もっと自在にサーバを使い倒す 業務に役立つPerl [2012年4月11日発売]
URLリンク(gihyo.jp)
モダンPerl入門 [2009/2/10]
URLリンク(www.amazon.co.jp)
モダンPerl入門 増補改訂版(仮)[2014年1月予定]
URLリンク(codezine.jp)
Perl CPANモジュールガイド [2011/4/8]
URLリンク(www.amazon.co.jp)
【オンライン
3:マニュアル】 最新のドキュメント: http://search.cpan.org/dist/perl/ perldoc.jp: http://perldoc.jp/ perldoc.perl.org: http://perldoc.perl.org/
4:デフォルトの名無しさん
14/02/19 23:38:16.54 .net
[少し古めの良書]
プログラミングPerl 第3版 VOLUME 1,2(駱駝)[2002年09月 発行]
URLリンク(www.oreilly.co.jp)
URLリンク(www.oreilly.co.jp)
Perlクックブック 第2版 VOLUME 1,2 [2004年09月 発行]
URLリンク(www.oreilly.co.jp)
Perl ベストプラクティス [2006年08月 発行]
URLリンク(www.oreilly.co.jp)
Perl Hacks [2007年01月 発行]
URLリンク(www.oreilly.co.jp)
実用 Perlプログラミング 第2版 [2006年03月 発行]
URLリンク(www.oreilly.co.jp)
5:デフォルトの名無しさん
14/02/19 23:38:56.41 .net
【日本語、Unicode関連】
Encodeモジュール
URLリンク(search.cpan.org)
第31回 encoding:いつまでもjperlから抜け出せない方に
URLリンク(gihyo.jp)
第32回 Encode:日本語だけ扱えればよいのではなく
URLリンク(gihyo.jp)
perlunifaq - Perl Unicode FAQ
URLリンク(perldoc.jp)
perlunicode - Perl における Unicode サポート
URLリンク(perldoc.jp)
URLリンク(www.rwds.net)
【モジュール】
CPAN.com: URLリンク(search.cpan.org)
【Perl環境構築】
plenv
URLリンク(github.com)
cpanm
URLリンク(search.cpan.org)
URLリンク(perldoc.jp)
6:デフォルトの名無しさん
14/02/19 23:39:35.34 .net
# [Perl 日本語処理の基礎の基礎]
# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# 入出力ともシフト JIS 形式のファイルまたは DOS 窓を想定しています。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。
7:デフォルトの名無しさん
14/02/19 23:46:41.13 .net
糞スレいくつも立ててんじゃねーよ
いい加減にしろ
スレリンク(tech板)
8:デフォルトの名無しさん
14/02/19 23:48:52.70 .net
■推移
URLリンク(www.tiobe.com)
2013.Dec 1.072%
2014.Jan 0.917%
2014.Feb 0.887%
■推移グラフ
URLリンク(www.tiobe.com)
■Perlの今後
他言語に対する優位性がほとんどないため、消滅に向かって進んでいる。
近い将来消えるのは確実。
9:デフォルトの名無しさん
14/02/20 01:15:48.35 .net
TIOBEって日本じゃほとんど聞いたことがないよね?Perlは日本語をちゃんと処理
できる数少ない処理系だから、海外とは状況が違うと思うんだよね
10:デフォルトの名無しさん
14/02/20 01:40:45.62 .net
自分がほとんど聞いたことがないという無知っぷりを晒しつつ
その前提で語る基地害がPerl厨
11:デフォルトの名無しさん
14/02/20 02:48:27.42 .net
乱立してる統計サイトの内の一つで、たいしたサイトじゃない。
URLリンク(langpop.com)
こんなサイトもあって、今話題に登ってる言語の項目とか見たら
PHPもPerlも似たりよったり。
こんなもんに一喜一憂するのはアホのする事。
#別に「Perlが落ち目じゃない」と主張するつもりも、毛頭無い。
12:デフォルトの名無しさん
14/02/20 03:30:30.50 .net
乱立といえばム板にスレッド乱立させてるPerl厨みたいだな
いい加減迷惑なんだよゴキブリ共
消滅寸前のゴミ言語にこんなにスレッドは必要ない
Perlについて
スレリンク(tech板)
【モダン推奨】Perlについての質問箱 50箱目
スレリンク(tech板)
Perl初心者スレ(マジレス回答)
スレリンク(tech板)
Perlについての罵倒スレ 63箱目
スレリンク(tech板)
Perlについての質問箱 63箱目
スレリンク(tech板)
13:デフォルトの名無しさん
14/02/20 07:42:53.27 .net
WebProgの方で、その活動すれば?
そのスレの内三つは荒しが立てたスレだし、Perlと名前が入るスレ自体も10個しかないけど
向うには両手に余るくらいのスレは乱立してるぞ。
14:デフォルトの名無しさん
14/02/20 11:23:00.57 .net
久々の正式なスレ立て乙
個人的には「ミニマルPerl」が俺の目を覚ましてくれた本だなあ
まあ、解ってる人には間違いなく退屈な本だけれども
15:デフォルトの名無しさん
14/02/20 16:17:33.48 .net
スレ乱立のうちの1つだから全く乙じゃない
ただの迷惑行為
16:デフォルトの名無しさん
14/02/21 00:39:44.03 .net
重複によりこのスレには削除依頼が出されました
↓のスレに移動してください
【誘導】
Perlについての質問箱 63箱目
スレリンク(tech板)
17:デフォルトの名無しさん
14/02/21 00:46:22.39 .net
【プログラミング自体の経験が無い奴はまずココを読め]】
Perl プログラミング講座: URLリンク(nyx.pu1.net)
【本】
リャマ: URLリンク(www.oreilly.co.jp)
駱駝: URLリンク(www.oreilly.co.jp)
Effective Perl: URLリンク(www.c-r.com)
クックブック: URLリンク(gihyo.jp)
Perl ベストプラクティス: URLリンク(www.oreilly.co.jp)
Perl Hacks: URLリンク(www.oreilly.co.jp)
【オンラインマニュアル】
最新のドキュメント: URLリンク(blog.livedoor.jp)
perldoc.jp: URLリンク(bg.pi-ppi.com)
perldoc.perl.org: URLリンク(manual.xwd.jp)
18:デフォルトの名無しさん
14/02/21 15:41:53.76 .net
例のPHP厨毒の精神異常者がスレを乱立させてから動きがパッタリやんだが、規制食らったのか?
それとも夜に活動が再開されるのか?
19:デフォルトの名無しさん
14/02/21 15:48:29.84 .net
乱立させてたのってPHPユーザーなの?
てっきりPerl厨だと思ってたんだけど。
スレ乱立とか頭の悪いことをするのはPerlを選ぶような知能の低いPerl厨くらいしかいないだろ。
20:デフォルトの名無しさん
14/02/21 16:10:45.03 .net
php厨()とか妄想をベースに考えるから、事実と整合性が取れなくなって>>17みたいな書き込みをするようになる
というかその不整合からくる違和感に耐えられなくなって書き込んでるって言ったほうが正解か
>>17は自覚がないみたいだけど糖質の疑いがある
21:デフォルトの名無しさん
14/02/21 17:14:07.34 .net
自演乙
22:デフォルトの名無しさん
14/02/21 17:39:17.06 .net
>>17
糖質も発見が早ければ投薬で治療できるから病院行ってみたら?
23:デフォルトの名無しさん
14/02/21 18:43:53.70 .net
自己紹介乙
24:デフォルトの名無しさん
14/02/21 19:36:32.84 .net
>>17ってまさか本当に自覚ないのかな。
25:デフォルトの名無しさん
14/02/21 19:39:12.82 .net
>>23
>>23
26:デフォルトの名無しさん
14/02/21 22:00:12.92 .net
自覚があれば病院行くだろうし
糖質と診断されればネットは控えろと言われるだろうから
こんなところにはいない
27:デフォルトの名無しさん
14/02/21 22:18:44.98 .net
罵倒スレのほうが内容にマッチしてるじゃん、何でわざわざ質問箱で立て直したの?
28:デフォルトの名無しさん
14/02/22 02:27:43.89 .net
Perl厨にとってはこれが質疑応答なんだよ
29:デフォルトの名無しさん
14/02/23 08:57:46.27 .net
朝勃ちんこ
30:デフォルトの名無しさん
14/02/24 19:35:06.10 .net
Perl=ちんこ言語
男のちんこをしゃぶれない弱輩には使いこなせない言語
31:デフォルトの名無しさん
14/08/23 00:49:39.55 j4ngjv2t.net
ぐろ
32:デフォルトの名無しさん
14/09/05 22:30:13.20 S+Rzc4u+.net
>>30
グロ
33:デフォルトの名無しさん
14/09/05 23:11:47.51 p4jkMY4H.net
亀頭?
34:デフォルトの名無しさん
14/12/11 16:19:01.34 OlwBDLMK.net
perl 5(v5.16.3)で
URLリンク(d.hatena.ne.jp)
を走らせると
BEGIN not safe after errors--compilation aborted at ~/op.pl line 16.
と止まってしまいます。
解決策を教えてください。
35:デフォルトの名無しさん
14/12/11 17:08:56.68 aWaBOmKM.net
>>33
OSは何?
36:デフォルトの名無しさん
14/12/13 11:26:51.16 sck7BTkh.net
MacOSX1068です
37:名無しさん@そうだ選挙に行こう
14/12/13 13:22:37.60 toJAZvUP.net
>>35
mac持ってないから試せないけど、一応これで動くんじゃないかと。
adhocな対応でセキュリティ考えてないから注意してね。
open my $fh, '<', \(my $dmy = `@cmd`) or die "Can't exec @cmd";
38:名無しさん@そうだ選挙に行こう
14/12/13 13:39:32.35 SQgyoVwB.net
えーん
39:デフォルトの名無しさん
15/01/03 02:38:43.41 fziQOJOK.net
hage
40:デフォルトの名無しさん
15/06/08 23:02:16.28 fDJEyEgd.net
正規表現で
aaa 99 PPP
iii 87 XYZ
uuu 32 XXX
の PPP以降 と XYZ以降 と XXX以降 を取り出すのはどうすれば良いでしょうか?
aaa iii uuu が半角の文字 99 87 32 が 数字である事は保証されていますが
PPP XYZ XXX に至るまで半角スペース、もしくは全角スペースがいくつあるかは保証されておらず
substr 等で切りだす事はできません。わかる方宜しくお願いします。
41:デフォルトの名無しさん
15/06/09 00:25:53.38 lkN1yBxE.net
文章が不透明だから分からなくなる。(誰にも分からない)。
正規表現は完璧に仕様を出さないと書けない。出せば単にそれを書くだけ。
行頭は半角文字列である → ^[a-z]
その後に半角スペースがある → \ (←見えないが半角スペース)
その後に2桁の数値がある。 → [0-9]{2}
その後に一文字以上の半角スペースと全角スペースが不定数混在する → ([\ \ ])+
その後に大文字が3つある → [A-Z]{3}
以降、行末まで。(取り出し対象文字列) → .*$
まぁ辞書やないんやけどな。ここは。
42:デフォルトの名無しさん
15/06/09 00:26:47.75 lkN1yBxE.net
あ、行頭は3文字か
^([a-z]{3})
43:デフォルトの名無しさん
15/09/30 22:23:35.50 sTs+YTNn.net
URLに?記号が2つある場合のデータの取得について
たとえばhttp://○○○.com/pagejump.cgi?http://△△△.com/disp.cgi?mode=testのよう?が2つある場合
$ENV{'QUERY_STRING'}だとhttp://△△△.com/disp.cgiまでしか取得できなくて?mode=testの部分が取得できないんですけど
フルに取得できるにはどうしたらいいんですか?
44:デフォルトの名無しさん
15/10/01 08:31:04.47 jKkjZr1B.net
フル?
「http://○○○.com/pagejump.cgi?http://△△△.com/disp.cgi?mode=test 」の場合、
query文字列は、「http://△△△.com/disp.cgi?mode=test」 だから、それが取れれば
十分なのでは?
その中の一部を取り出したいなら自分で好きに取り出せばいい
45:44
15/10/01 13:19:49.64 NghmrQed.net
スマヌ質問内容理解してなかった
だがPerl関係なくね?
46:デフォルトの名無しさん
15/10/02 00:15:42.88 jBpUUsqc.net
>>42
本当にクライアントが
http://○○○.com/pagejump.cgi?http://△△△.com/disp.cgi?mode=test
を送ったのなら、それが原因だと思う。
URL の各部分は適切にエスケープされなければならない。
Perl でやるならこうだ。
use URI;
use URI::Escape;
$u = URI->new("http://○○○.com/pagejump.cgi");
$u->query( uri_escape("http://△△△.com/disp.cgi?mode=test"));
# クライアントに適切なエスケープを期待出来ないなら……まあ、がんばってくれ。
47:デフォルトの名無しさん
15/10/02 03:53:10.85 j2xAjxnc.net
>>39-41
これで一致した、次の文字から、行末までを取得する
^([a-z]{3})([\ \ ])+[0-9]{2}([\ \ ])+
半角・全角スペースは、「aaa○99○PPP」
○の所にしか入らないのだな?
つまり、各トークンの中には、入らないのだな?
それなら、全行のすべての全角スペースを、
半角スペースに置換して、その後、
連続した半角スペースを、1つの半角スペースに置換する
そして、8文字目から行末までを、取得する
>>43-45
URLの各部分では、特別に扱う文字が決まっているから、
クエリ文字列部分で、「? =」・日本語などは使えないので、
エスケープする
48:デフォルトの名無しさん
15/10/03 06:04:18.38 AAE95wIv.net
4ヶ月前にレスに回答(笑)
49:デフォルトの名無しさん
15/10/13 20:00:49.41 0lWpYFcj.net
URLリンク(andtokyo.jp)
&TOKYO
sub TOKYO {
#だれか面白いルーチン書いて
50:デフォルトの名無しさん
15/11/08 01:17:27.81 ytCokofM.net
趣味と勉強を兼ねてcgi使ったホームページを作ってるんだが
セッションって格納した値は、同じルーチン内でしか使えないの?
格納したセッションをLocationでとんだ先で取得したいんだけど
何かと組み合わせないとそういうのできないのかな
51:uy ◆Qawu9.2l1E
15/11/08 02:42:11.75 vxaYLa75.net
暗い趣味
52:デフォルトの名無しさん
15/11/20 13:59:09.99 ygWQ/grN.net
test
53:バイキンマン
15/11/20 14:01:31.29 ygWQ/grN.net
プログラム板でもやっぱそうか・・・・・
バグ発見!
名前欄に0と英数字で入力すると出力されないバグ!
変数の文字の長さで入力を判定して出力させれば
バグは治る!
すぐに対処を申請します!
54:デフォルトの名無しさん
15/11/21 21:10:33.25 WD+kKzRm.net
>>49
セッションって?
55:デフォルトの名無しさん
15/11/21 21:12:29.73 WD+kKzRm.net
あっ、2週間前のレスだったすまん
56:デフォルトの名無しさん
15/11/23 21:01:14.60 4+JhTSZZ.net
a
57:デフォルトの名無しさん
15/11/23 21:01:48.81 4+JhTSZZ.net
質問です。
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common qw(POST);
my $ua = LWP::UserAgent->new;
$ua->timeout('7');
my $req = POST('URLリンク(yahoo.co.jp)');
my $res = $ua->request($req);
print $res->content;
のようにすると文字化けします。文字コードの指定方法も分からず困っております
だれかおしえてくだあさい
58:デフォルトの名無しさん
15/11/24 00:50:23.60 oXoHv6i5.net
もらった文字列と、表示されている文字の、
文字コードが異なっているのだろう
文字を表示しているソフトの、文字コードを変えれば?
たぶん環境変数か設定項目にある
文字を表示しているソフトは、何を使っているの?
59:デフォルトの名無しさん
15/11/24 00:53:35.74 s947wE2H.net
>>56
文字化けしてないよ
60:デフォルトの名無しさん
15/11/24 00:56:04.50 s947wE2H.net
yahoo.co.jpは301 Moved Permanently だけど、move先を指定しても文字化けはない
61:デフォルトの名無しさん
15/11/29 01:33:56.66 rf1AiNx3.net
win10の64bit版でperl32bit版動くかな?
ちなみにwin7の64bitではperl32動いてます
62:デフォルトの名無しさん
15/11/29 03:12:21.07 rf1AiNx3.net
もう1個のスレのほうがメインみたいなのでそっちで聞いてきます
63:デフォルトの名無しさん
16/02/12 18:03:25.55 /96fpKw+.net
ヒアドキュメントで表示は
print <<"EOS";
(中略)
EOS
だけど
これをファイルに書き込むにはどうしたらいいんですか?
64:デフォルトの名無しさん
16/02/13 12:32:20.94 +ZsFTbcU.net
print $fh <<"EOS";
中身
EOS
65:デフォルトの名無しさん
16/02/14 03:31:58.89 kuEFe+X3.net
別解として
perl script.pl > file.txt
66:デフォルトの名無しさん
16/02/14 18:40:21.30 kuEFe+X3.net
もしかして、Windowsのスタート→プログラム→アクセサリ→メモ帳
を実行して
print <<"EOS";
(中略)
EOS
を打ちこみ、メモ帳のメニューのファイル→名前を付けて保存
のほうを知りたかったのですか?
67:デフォルトの名無しさん
16/02/16 07:29:00.22 y+ZjOqCo.net
いきなりだけどPerlのクラスの仕組み(かなり手抜き)
+ JavaScript の質問用スレッド vol.128 +©2ch.net
スレリンク(hp板:401-番) のJavaScriptのthisの話の余談
大雑把に言うとPerlのクラス(オブジェクト)はハッシュに毛が生えたもの
※この段階ではクラスではない。ただのハッシュを返すnew関数とそれを入れたKlassパッケージ
package Klass;
sub new { return {a=>1, b=>2 } }
sub foo {}
Perlにはメソッドというものはない。全て関数。
コンストラクタ(一般的にnewという名前にする)もただの関数。
Perlではクラスやオブジェクトはこのようにして呼び出す。
my $obj = Klass->new();
$obj->foo();
ここで問題がある。$obj->foo()は、Klass::foo()を呼び出すことになるが、
$obj(ただのハッシュ)からどうやってKlass::foo()であることを知るのか?
ただのハッシュを返しているだけのnew関数にはそれは無理なので
ただのハッシュに毛を生やす。
sub new { return bless({a=>1, b=>2 }, 'Klass') }
これでただのハッシュじゃなくてKlassという情報がくっついたハッシュになった。
これで$obj->foo()はKlass::foo()を呼び出せる。
68:デフォルトの名無しさん
16/02/16 07:29:53.95 y+ZjOqCo.net
ここからが面白くて「アローの左側は関数の第一引数になる」というルールを追加する。
そうすると、Klass->new() という呼び出しは、 new('Klass') 相当になることがわかる。
ということで、newの第一引数にはクラスの文字列が入ってくるのでそれを使える。
sub new { my $class = shift; return bless({a=>1, b=>2 }, $class }
さらに、$obj->foo() の呼出も同じ。 foo($obj) 相当になる。
なので、sub foo { my $self = shift; } の$selfにはnewの戻り値である
毛が生えたハッシュ、つまりオブジェクト自身(他の言語のthis相当)が入ってくることになる。
このようにアローの左側が第一引数になる。という挙動は他の言語でも一緒で
JavaやC++は内部的にそれを行ってるだけ。
そしてJavaScriptでも.(ドット)の左側が第一引数になると考えると、
JavaScriptのthisがよくわからんという問題も簡単に理解できるはず。
JavaScriptのthisの話は元スレへどうぞ
69:デフォルトの名無しさん
16/02/16 10:39:05.36 rD0NYg0s.net
面白いというか、みんな知ってると思う
70:デフォルトの名無しさん
16/02/17 00:31:54.19 xaInBBRG.net
うん。そしてそれが有用ならもっと使われているはずだが、現実はあまり使われていない。
コードが実行時に生成されるようなダイナミックなものはデバッグ、テスト、保守がしにくい。
71:デフォルトの名無しさん
16/02/17 00:40:54.86 wnysiCN2.net
>>69
何の話してるのお前?
72:デフォルトの名無しさん
16/02/19 00:01:04.65 ifdckMGM.net
文字列の/*と*/で囲まれた部分と/*と*/に色をつけたい
例えば$str="/*abcdef*/";の場合は
$str =~ s/\/\*/<font color=\"green\">\/\*/g;
$str =~ s/\*\//\*\/<\/font>/g;でできましたが
$str="/*//////abcdef/////*/";の場合はうまくできませんでした。
どうすればうまくいくのでしょうか?
73:デフォルトの名無しさん
16/02/19 01:43:09.22 jNAd9H+F.net
$str = ̄ s{(/¥*.*?¥*/)}{<font color=”green”>$1</font>}g;
74:デフォルトの名無しさん
16/02/22 17:33:02.93 BncrDEhF.net
my $data = {
'data1' => [1,2,3],
'data2' => [4,5,6],
'data3' => [7,8,9]
};
上のような配列のハッシュで
ハッシュそれぞれの0番目、1番目、2番目のデータを
取り出したい場合どうすればいいのでしょうか
for (my $i = 0; $i < 3; $i++) {
print $data->{"data1"}[$i],"\n";
print $data->{"data2"}[$i],"\n";
print $data->{"data3"}[$i],"\n";
}
75:デフォルトの名無しさん
16/02/22 22:57:33.32 mB6Cjpa0.net
それで合ってるよ。
URLリンク(perldoc.jp)
を読みなさい。
$data->{
76:デフォルトの名無しさん
16/02/22 23:01:42.17 mB6Cjpa0.net
ごめん、ちゃんと書いたのに何かアクシデントがあったようだ。もう一回送るよ。
それで合ってるよ。
URLリンク(perldoc.jp)
を読みなさい。
$data->{"data1"}->[$i]
が正式な書き方だが (配列|ハッシュ)要素の参照が連続していれば間の矢印を省略してもいい。
個人的には、リファレンスだということを意識していたいから省略しないけどね。
77:デフォルトの名無しさん
16/02/23 03:28:09.20 Oh6h4g2T.net
シングルクォートもダブルクォートも要らねぇ。
my $data = {
data1 => [1,2,3],
data2 => [4,5,6],
data3 => [7,8,9]
};
print $data->{data1}[$i],"\n";
78:74
16/02/23 09:55:37.41 usPktkPU.net
>>74-76
勉強になりました。
ありがとうございます。
79:デフォルトの名無しさん
16/02/23 10:27:03.85 usPktkPU.net
Web::Scraperでスクレイピングしているのですが
サンプルでは
use YAML;
warn Dump $res;
という書き方でこの方法だとデータの構造がよくわからないのですが
Dump何をつかっているのですか?
Ubuntu14.04の64bitを使っています。
80:79
16/02/23 11:04:41.58 usPktkPU.net
>>78
データの構造はData::Dumperをイントールしたらわかるようになりました。
すみません。
81:デフォルトの名無しさん
16/02/24 18:07:14.97 E2TS40Hx.net
print $res->{list}[1]->{link}[0]->{url},"\n";
print $res->{list}[1]->{link}[0]->{title},"\n";
print $res->{list}[1]->{link}[1]->{url},"\n";
print $res->{list}[1]->{link}[1]->{title},"\n";
こういったデータをforeahで出力したい場合
???にはどのようにかけばいいのでしょうか
foreah my $i(???) {
print $i->{url};
print $i->{title};
}
82:デフォルトの名無しさん
16/02/24 19:01:01.43 1Q1vaK3L.net
>>80
なんで同じのが2書いあるんだよ
83:デフォルトの名無しさん
16/02/24 22:23:15.99 VYWYZ9lH.net
>>80
my $links = $res->{list}[1]{link};
for my $link ( @$links ) {
say $link->{$_} for qw/url title/;
}
84:デフォルトの名無しさん
16/02/24 22:43:39.56 PL8yH0Su.net
>>82
say forの行が気持ち悪い。やり直し
85:デフォルトの名無しさん
16/02/24 22:47:52.27 VYWYZ9lH.net
>>83
やり直し(キリッ
じゃなくて自分ならこうするというのを示せよw
86:81
16/02/25 09:33:24.21 AM2kna+z.net
>>82
ありがとうございました。
一度変数に保存してからすればよかったのですね。
my $links = $res->{list}[1]{link};
for my $link ( $res->{list}[1]{link} ) {
こういう書き方をしていてリストにするにはどうしたらいいのか
わからないので質問させていただきました。
たいへん勉強になりましたありがとうございました。
87:デフォルトの名無しさん
16/02/25 23:12:11.74 B0t5yMaC.net
>>85
デリファレンスは一度代入しなくてもできるけどちょっとわかりにくいかなって
for my $link ( @{ $res->{list}[1]{link} } ) {
新しい書き方だとこんなのもあったり(postfix dereferencing)
$res->{list}[1]{link}->@*
88:デフォルトの名無しさん
16/02/26 12:14:26.93 lmpGubNL.net
1位は「Python」、プログラミング言語別の平均年収ランキングが発表
URLリンク(www.mdn.co.jp)
2位には「Perl」(平均年収633万円)、3位には「Ruby」(平均年収606万円)がランクインした。
89:デフォルトの名無しさん
16/02/27 00:21:51.17 7I91l6Zs.net
>>66-67
超亀レスですがありがとうございます、勉強になりました!
90:デフォルトの名無しさん
16/02/27 00:49:08.38 fhIzDVzC.net
my $date = '平成28年2月26日18:55';
my $week = '金';
$date =~ s/日/日 $week曜日 /;
print $date;
をすると文字化けするのですが原因がわかりません。
91:デフォルトの名無しさん
16/02/27 10:36:17.16 VqgeV1ea.net
環境とか文字コードは
92:デフォルトの名無しさん
16/02/27 13:36:07.74 fhIzDVzC.net
さくらのレンタルサーバーのCGIでPerl 5.14.4です。
$weekを削除すると文字化けはおこりません。
別のプログラムではうまく動いているのですが
93:92
16/02/27 14:09:58.43 fhIzDVzC.net
$week\xe6\x9b\x9c\xe6\x97\xa5になっているみたい
プログラム内に入力している日本語がprint表示するときにくずれるようです。
94:デフォルトの名無しさん
16/02/27 14:23:16.95 VqgeV1ea.net
${week曜日}
${week}曜日
>プログラム内に入力している日本語がprint表示するときにくずれる
やっぱutf8フラグかなあ…
95:92
16/02/27 14:55:51.07 fhIzDVzC.net
すみませんプログラムミスでした。
96:デフォルトの名無しさん
16/03/05 17:24:53.21 jVpVtd3O.net
日付で教えて下さい
1/23 12:34
を西暦をくっつけて
2016/1/23 12:34に変換したいのですが
例えば未来の日時の場合は
5/1 12:34
を2015/5/1 12:34と1年引いた年にしたいのですが
下のプログラムでは
2015/05/02 06:45:10になります
年の引き算はどうすればいいのでしょうか
use strict;
use warnings;
use 5.010;
use Time::Piece;
use Time::Seconds;
my $t = localtime;
my $year = $t->year;
my $str = "1/23 12:34";
my $date = Time::Piece->strptime("$year/$str", '%Y/%m/%d %H:%M');
if ($t < $date) {
$date -= ONE_YEAR;
}
say $t->strftime('%Y-%m-%d %H:%M:%S');
say $date->strftime('%Y-%m-%d %H:%M:%S');
97:デフォルトの名無しさん
16/03/05 17:32:45.69 Kk7Ussws.net
>>95
いや、年の引き算って言っても一年は365日とは
限らないんだから、仕様を決めないとだめでしょ?
例えば2月29日の1年前は何日なのか?っていう。
98:デフォルトの名無しさん
16/03/06 18:03:04.50 OXa3i/Gy.net
$str =
99:デフォルトの名無しさん
16/03/07 00:42:40.54 Gv57dso9.net
>>95
年月日に分けたのち、年を -1 する。
100:デフォルトの名無しさん
16/03/07 06:16:56.64 eudRNLDZ.net
だからそうすると2月29日が出来てしまうって言ってるわけ
101:デフォルトの名無しさん
16/03/07 21:18:09.27 jBGm+KXA.net
pythonのスクリプトの頭に、use strict;って書いた。頭いかれてきたw
102:デフォルトの名無しさん
16/03/07 23:50:19.65 fqGSH3nt.net
my($year,$month,$day,$hour,$min) = (localtime)[5,4,3,2,1];
my $str = "1/23 12:34";
my($strmonth,$strday,$strhour,$strmin) = $str =~ m|([0-9]+)/([0-9]+) ([0-9]+):([0-9]+)|;
if (
sprintf('%02d%02d%02d%02d',$strmonth,$strday,$strhour,$strmin)
gt
sprintf('%02d%02d%02d%02d',$month+1,$day,$hour,$min)
) {
printf("%04d/%02d/%02d %02d:%02d\n",1900+$year-1,$strmonth,$strday,$strhour,$strmin);
}
else {
printf("%04d/%02d/%02d %02d:%02d\n",1900+$year,$strmonth,$strday,$strhour,$strmin);
}
# 基本に忠実に。応用はそれから
103:デフォルトの名無しさん
16/03/08 00:11:41.92 2waKAzbH.net
>>101
$month -= 2;
my $str = "2/29 12:34";
したら、2015/02/29って答が出るコードなんぞ貼るなや
元の質問者のコードに、
ふつうに$obj->is_leap_yearの判定加えて、
2/29跨ぎなら、LEAP_YEAR
引けばいいだけだろ。
104:デフォルトの名無しさん
16/03/09 00:16:20.50 Djq1Ua6S.net
この場合は 2015/02/29 が欲しい答え
105:デフォルトの名無しさん
16/03/09 05:51:47.62 BRdU+Z94.net
バギーなコードが眼に見える様だ
106:デフォルトの名無しさん
16/03/10 00:41:03.49 m8iGuBqw.net
要件にない仕様を自己満足で追加してはいけない
この件はTime::Pieceだとうまくこなせない問題
融通がきかないのがオレオブジェクトのつらいところだ
107:デフォルトの名無しさん
16/03/10 06:53:37.48 cOoRDwdC.net
Time::Piece関係ねーだろ。
頭悪いな。
108:デフォルトの名無しさん
16/03/13 00:11:27.55 W4AXq/NT.net
localtimeとTimelocalは次スレのテンプレに追加するか
同じ質問が繰り返されてみんな同じところではまるからなあ
109:デフォルトの名無しさん
16/03/14 11:18:30.62 EtVpSr8/Z
Time::Pieceのadd_years()メソッドで解決。
$t = $t->add_years(-1);
ただし、2/29は、3/1側に倒される。
110:デフォルトの名無しさん
16/03/17 15:49:56.51 HmsCvSUF.net
クッキーへの書き込み処理での質問
エラーメッセージを取得処理
print "Content-type:text/html\n";
if(エラー数が0の場合){
投稿データをクッキーに書き込む処理
}
print "\n";
エラーメッセージの表示処理
というようにエラーメッセージの取得と表示の間に
print "Content-type:text/html\n";print "\n";を挟む形になってしまうので
これらをまとめてサブルーチン化したくてもできません
こういう場合でもうまくサブルーチン化できる方法を教えてください
111:デフォルトの名無しさん
16/03/17 17:41:21.64 H1m/hwv2.net
エラーメッセージの出力時にContent-typeから出力すればいいのでは
112:デフォルトの名無しさん
16/03/17 18:09:04.11 r8Uypp4J.net
>>109
そのためにCGI.pmなどのライブラリや
各種フレームワークがある。
113:デフォルトの名無しさん
16/03/19 22:54:54.53 zQsVsKn8.net
my $kukkii =
114:デフォルトの名無しさん
16/03/20 14:44:26.98 AaFdygkh.net
'';
115:デフォルトの名無しさん
16/03/20 23:05:38.19 ZT1ttS3p.net
何をしたかったのかよくわからないけど、せめて cookie と書いてほしかった。
116:デフォルトの名無しさん
16/03/21 23:09:59.48 mpXdX/cy.net
住所を入れる変数でさ
$adoresu = ・・・
みたいな名前つかうヤツ、いるよね
英語なのか何なのか、よくワカラン
117:デフォルトの名無しさん
16/03/23 01:56:25.05 isz3o5XG.net
$message = エラーメッセージを取得;
print "Content-type:text/html\n";
if(エラー数が0の場合){
投稿データをクッキーに書き込む処理
}
print "\n";
print $message; # エラーメッセージの表示処理
118:デフォルトの名無しさん
16/03/23 21:53:51.11 ftv772ff.net
my $str = "あああabcあああcdefghあああ123456";
この文字列で半角英数字の部分をAAAに置換するにはどうすればいいですか?
あああAAAあああAAAあああAAAになればOKです
119:デフォルトの名無しさん
16/03/23 23:01:13.44 OHojQvKP.net
ここで聞くよりも
URLリンク(perldoc.jp)
を読みなさい。その方が早くて正確です。
120:デフォルトの名無しさん
16/03/24 00:07:44.52 3WWxxvBQ.net
my $str = "あああabcあああcdefghあああ123456";
print $str, "\n";
$str =~ s/[A-Za-z0-9]+/AAA/g;
print $str, "\n";
121:デフォルトの名無しさん
122:>2016/03/25(金) 01:11:07.68 ID:v9Mc4pMx.net
123:デフォルトの名無しさん
16/03/27 01:06:33.94 jno5DU+g.net
パールでまた問題に直面したら話題を提供してあげますので楽しみにしてるんだぞ。
124:デフォルトの名無しさん
16/03/27 15:47:58.07 HfxbfBB0.net
ありがとうございます。
125:デフォルトの名無しさん
16/04/14 19:01:51.27 v1e64Ann.net
ファイル演算子の-eと-fの違いは?
ファイルが存在するかどうかはどっちを使っても良いのですか?
126:デフォルトの名無しさん
16/04/14 19:46:27.77 G3MchQfa.net
すみません。初めてperlを使うのですが、perlでQRコードを生成したいです。
ブラウザからアクセスしてQRコードの標準出力は出来たのですが、ファイルを生成する方法がわかりません。
以下のソースを実行すると、pngが生成されるのですが、生成されたpngをダブルクリックしても開けなくなります。
use GD::Barcode::QRcode;
binmode STDOUT;
my $qr = GD::Barcode::QRcode->new('test',{Ecc=>M, Version=>5, ModuleSize=>3})->plot();
open my $fh, '>', 'qr.png' or die;
print $fh $qr->png;
close $fh;
もしお分かりの方がいらっしゃったらお願いします。
127:デフォルトの名無しさん
16/04/14 20:56:59.29 rjSU//7G.net
>>123
-fは指定されたものが通常ファイルで存在した場合のみ真
-eは同名のディレクトリやシンボリックリンクでも真
>>124
openの次の行にbinmode $fh;
128:124
16/04/14 21:09:45.25 G3MchQfa.net
>>125
ありがとうございました。
初心者なもので、もう丸一日困っておりました。
129:デフォルトの名無しさん
16/04/24 15:13:08.67 mI4IMx9A.net
centos、zshの環境で、plenvを使っていて、apacheでcgiを動かそうと考えています。
/var/www/html 直下で #!/usr/bin/perl のcgiが動くところまではブラウザで確認できました。
あ�
130:ニはplenvの下記初期設定をするだけ、と思ったところで詰まりました。 export PATH=~/.plenv/bin:$PATH eval "$(plenv init -)" apacheの自動起動では ..zshrc を指定するところがありません。 とりあえず下記で、plenvでインストールしたパスだけは設定したのですが、 eval "$(plenv init -)" の中でどんな処理がされているのかわかりません。 # echo "PATH=/home/centos/.plenv/shims:$PATH" >> /etc/sysconfig/httpd # /etc/init.d/httpd restart eval "$(plenv init -)" ではどんな処理がされているのでしょうか? また、plenvの環境は、パスさえ設定しておけば、特に支障はないのでしょうか?
131:デフォルトの名無しさん
16/04/24 16:10:25.44 pOtqw7s6.net
最後の行だけ。
普通に、echo $(plenv init -)すれば、標準出力に内容が出ます。
132:デフォルトの名無しさん
16/04/24 17:03:31.20 jLfEtDRT.net
>>127
そーすこーどにぜんぶかいてあります
133:127
16/04/24 23:45:45.94 WFRvhXno.net
>>128
なるほど!
評価してるだけだから、echoで出力できますね。
気づきませんでしたありがとうございます。
134:デフォルトの名無しさん
16/04/25 02:23:47.24 wavxOtJH.net
echoしなくてもplenv init - だけでいいよw
もっとも、それ見た後は
そーすこーどみれだけどなw
135:デフォルトの名無しさん
16/04/27 09:59:00.96 I/i5T1uZ.net
openで開いたファイルをcloseで閉じる前にexitなのでプログラム強制終了した場合
自動的に閉じられてますか?
何か問題ありますか?
136:デフォルトの名無しさん
16/04/27 13:09:15.67 3LxG86Of.net
closeされることが保証されるわけではないが、普通のOSなら
OSがcloseを発行する。何を問題とみなすかによるが普通は問題ない
137:デフォルトの名無しさん
16/04/28 01:35:18.90 rK49iHPu.net
cgiなら問題ないけどmod_perlとかだとファイルディスクリプタ消費したままになる
138:デフォルトの名無しさん
16/04/28 02:09:41.77 hmSh3kQm.net
exit ではなく die を使うという方法もある。もちろん eval ブロックの中で。
139:デフォルトの名無しさん
16/04/29 11:09:29.51 OUpC6wqc.net
END {
close(FILE);
}
もしくは
open(my $file,'file.txt');
だな
140:デフォルトの名無しさん
16/04/29 19:53:28.89 WQhKsXVS.net
tmp.datをlog.datにrenameするときrename失敗したら成功するまで繰り返す処理をしたい
このようにrename成功したらループを抜けるというやり方でもいいんでしょうか?
他にいいやり方はありますか?
for($n=0;$n<=100;$n++){
$rename_seikou = rename("tmp.dat","log.dat");
if($rename_seikou==1){
last;
}
}
141:デフォルトの名無しさん
16/04/29 20:40:17.89 bfvjxGWD.net
本当にそういう繰り返しをしたいのなら sleep を入れた方がいいと思う。
それから、失敗した時は原因を確認した方がいいと思う。つまり、こんな感じ。
use Errno 'EBUSY';
if ( rename( $src,$dest)){
# 成功
} elsif ( $! eq EBUSY){
# 多分、別のプロセスで使用中。少し待てば成功するかも。
} else {
# 待っても無駄だろう。
die( $!);
}
142:デフォルトの名無しさん
16/04/29 20:50:54.01 bfvjxGWD.net
ごめん、間違えた。
$! eq EBUSY
じゃなくて
$! == EBUSY
143:デフォルトの名無しさん
16/04/30 11:00:17.55 DNyH92Gg.net
正規表現での置換について質問です。
<ul>
<li>あ</li>
<li>あ</li>
<li>あ</li>
<li>あ</li>
<li>あ</li>
</ul>
上の最後の<li>だけ<li class="a">に置換したです。
1時間以上考えてますができません。
144:140
16/04/30 11:01:02.01 DNyH92Gg.net
間違えました。
置換したです→置換したいです
145:デフォルトの名無しさん
16/04/30 11:11:29.23 dxKZGhAw.net
正規表現は少しでもほんの条件が不明瞭であれば誰にも書くことはできない
146:140
16/04/30 11:14:44.17 DNyH92Gg.net
自己解決しました。
$a =~ s/(^.*)\<li\>(.*$)/$1\<li class\=\"a\"\>$2/s;
147:140
16/04/30 11:39:47.11 DNyH92Gg.net
すみません。
新たな問題が発生しました。
<ul>
<li>あ</li>
<li>あ</li>
<li>あ</li>
<li>あ</li>
<li>あ</li>
</ul>
<ul>
<li>い</li>
<li>い</li>
<li>い</li>
<li>い</li>
<li>い</li>
</ul>
上記の文字列が$aに入っている場合で、各<ul>の最後の<li>だけ<li class="a">に置換したいです。
148:デフォルトの名無しさん
16/04/30 12:40:49.01 nOun1cZC.net
木構造のものを正規表現で置換するのは無理
JavaScriptのjQuery の、addClass, removeClass, toggleClass などを使う
それか、HTMLをパースする、ライブラリを探す
149:デフォルトの名無しさん
16/04/30 15:45:10.24 Z/JJxf61.net
否定の文字クラス使えば、普通に最短マッチで出来る事だろ。
s{<li>([^>]*?</li>¥s+</ul>)}{<li class="a">$1}sg
パースするライブラリ使えっつーのは同意だがな
150:デフォルトの名無しさん
16/04/30 15:46:02.92 Z/JJxf61.net
ああ、否定の文字クラス使わんでも出来るわ。
アホだ俺
151:140
16/05/01 14:05:59.88 mZCC86OL.net
>>145
ツリー構造というよりまさにあの並びの時だけの正規表現でいいんでPerlでやりたいんです
>>146
ありがとうございます
$a =~ s/\<li\>([^\>]*?\<\/li\>\s+\<\/ul\>)/\<li class\=\"a\"\>$1/sg;
では動きませんでした
152:デフォルトの名無しさん
16/05/01 16:22:48.05 EJZ0zho6.net
そのコードそのまま(円マークをバックスラッシュにして)
動かしたから、何らかの置換↓が得られたけど?
<ul>
<li>あ</li>
<li>あ</li>
<li>あ</li>
<li>あ</li>
<li class="a">あ</li>
</ul>
<ul>
<li>い</li>
<li>い</li>
<li>い</li>
<li>い</li>
<li class="a">い</li>
</ul>
無意味なエスケープは、コードの邪魔になるだけだからしない方がいいよ。
置換 s/// の右辺は正規表現ですらない(よってエスケープの必要無い)し。
153:デフォルトの名無しさん
16/05/03 07:34:49.17 PeIabFbi.net
\現\実 !-=≡ヘ(* - -)ノ
154:デフォルトの名無しさん
16/05/03 22:19:44.35 u2mE3+tw.net
/[0-9]{$num}/
のような量子数は変数にできないんでしょうか?(^^?
155:デフォルトの名無しさん
16/05/04 01:44:17.76 eTkSZ25N.net
# 実行してみて
for $num (1..3){
$_ = '1' x ($num - 1);
print /[0-9]{$num}/ ? 'ok,' : 'not ok,';
$_ = '1' x $num;
print /[0-9]{$num}/ ? 'ok,' : 'not ok,';
$_ = '1' x ($num + 1);
print /[0-9]{$num}/ ? 'ok,' : 'not ok,';
print "\n";
}
156:デフォルトの名無しさん
16/05/04 17:17:13.34 cuRcUS6e.net
>>152
ありがとうございます。
変数は使えたんですね!
演算子が使えないようでした…申し訳ありません。
/[0-9]{$num+1}/
のような使い方がだめでした orz
157:デフォルトの名無しさん
16/05/04 22:28:29.07 0wPtL/Lt.net
$n = 2;
$pat_qr = $n + 1;
$pat_qr = qr/[0-9]{$pat_qr}/ ;
$pat_ev = eval( sprintf("qr/[0-9]{%d}/",$n+1));
$pat_co = qr/(??{ sprintf("[0-9]{%d}",$n+1) })/ ;
print( $_,"\n") foreach $pat_qr,$pat_ev,$pat_co;
# 個人的には $pat_qr がいいなぁ。eval を使うほどのことじゃないし $pat_co はデバッグしにくい。
158:デフォルトの名無しさん
16/05/05 15:20:47.88 W74rdbK+v
>>153
直接埋め込むには
URLリンク(perldoc.jp)
> 同様に、スカラへのリファレンスを返す式は ${...} で デリファレンスできます。
> 従って、上述の式は以下のように書けます:
>
> print "That yields ${\($n + 5)} widgets\n";
しかし、お勧めしない。
新しい変数を作るべき。
159:デフォルトの名無しさん
16/05/05 15:23:19.51 zs5en64n.net
# こうですよ
for $num (1..3){
$_ = '1' x $num;
print /[0-9]{@{[$num+1]}}/ ? 'ok,' : 'not ok,';
$_ = '1' x ($num + 1);
print /[0-9]{@{[$num+1]}}/ ? 'ok,' : 'not ok,';
$_ = '1' x ($num + 2);
print /[0-9]{@{[$num+1]}}/ ? 'ok,' : 'not ok,';
print "\n";
}
160:153
16/05/05 19:10:09.77 eJss6EWw.net
>>156
すごーい\(^^)/
ありがとうございます!
>>154
ありがとうございます!
161:153
16/05/05 19:13:26.95 eJss6EWw.net
あのあのもう一つ
ファイルハンドルで3行読み込むのを作ってみたのですがうまくいきませんでした…
どうしたらよいのでしょうか…
while ( $line[0..2] = <DATA> ) {
print $line[0];
print $line[1];
print $line[2];
}
__DATA__
なんたら
かんたら
たらのめ
162:153
16/05/05 19:19:01.51 eJss6EWw.net
ちょっとサンプル省略しすぎてすみません。
":encoding(cp932)"
等で漢字の表示は問題ありませんm(__)m
while ( $line[0] = <DATA> ) {
$line[1] = <DATA>;
$line[2] = <DATA>;
....
のように分解して書くと問題ありません。(DATAは必ず3行一組になります)
一度に、3行読み込む方法があればお教えくださいm(__)m
163:デフォルトの名無しさん
16/05/05 21:40:51.68 AhXWZZ47.net
@line[0..2]
配列スライスのシジルは@
164:デフォルトの名無しさん
16/05/05 23:21:34.59 zs5en64n.net
都合よく固定長を前提にはできないだろうから、
# 全部読んじゃって
chomp(@_ = <DATA>);
# 3つづつ処理する
while (@line = splice(@_,0,3)) {
print map {"[$_]"} @line;
print "\n";
}
__END__
1
2
3
4
5
6
7
8
9
165:デフォルトの名無しさん
16/06/01 11:50:03.90 6wx+Ihuz.net
$text = 'hoge<span class="hoge" id="hoge">"hoge"</span><span class="huge" id="huge">"hoge"</span>huge';
上のような文字列で<~>(タグ内)に囲まれた"だけ
166:デフォルトの名無しさん
16/06/01 11:54:16.91 6wx+Ihuz.net
$text = 'hoge<span class="hoge" id="hoge">"hoge"</span>
<span class="huge" id="huge">"hoge"</span>huge';
上のような文字列(改行されてますが1行です)で<~>(タグ内)に囲まれた"だけ " に置換したいです
s/(<.*?)"(.*?>)/$1"$2/g;
上のように試してみましたが、最初の1つのみ " に置換されるだけです
よろしくお願いします
167:162
16/06/01 12:36:41.40 6wx+Ihuz.net
タグの外側だけ置換する方法としては下記がどこかに載っていました
s/((?:\G|>)[^<]*?)"/$1"/g;
タグの内側だけ置換したい場合は>と<を逆にすればいいかと思ったのですができませんでした
168:デフォルトの名無しさん
16/06/01 12:56:13.02 UybPRljc.net
>>162-164
$text =~ s{(?<=&lt;)(.+?)(?=&gt;)}{ $1 =~ s/&quot;/"/gr }eg;
169:デフォルトの名無しさん
16/06/01 13:07:26.71 6wx+Ihuz.net
>>165
ありがとうございます
やってみましたがエラーになりました
もちろん&は半角に直しました
170:デフォルトの名無しさん
16/06/01 13:32:03.91 MHn5bFUb.net
どんなエラーか解らないことにはなんとも……
ひょっとして、5.14 以前の Perl を使ってたりする?
171:デフォルトの名無しさん
16/06/01 13:44:06.85 6wx+Ihuz.net
>>167
5.8系です
AddHandler cgi-script-debugが使えなくなってデバッグができないんです
この文法チェッカもいつの間にか消えてました
URLリンク(homepage2.nifty.com)
172:デフォルトの名無しさん
16/06/01 14:04:04.96 6wx+Ihuz.net
teraterm入れてSSH登録してエラーチェックしてみました
Bareword found where operator expected at test.cgi line 7, near "s/"/"/gr"
syntax error at test.cgi line 7, near "s/"/"/gr "
test.cgi had compilation errors.
173:デフォルトの名無しさん
16/06/01 14:11:20.95 MHn5bFUb.net
置換の r オプションは 5.14 からです。従来通り
perl -pe 's{(?<=&lt;)(.+?)(?=&gt;)}{ ( $str = $1) =~ s!&quot;!\"!g ; $str ; }eg'
みたいな感じでどうでしょうか。
174:デフォルトの名無しさん
16/06/01 14:17:56.91 6wx+Ihuz.net
>>170
できました!
本当にありがとうございました!
(Perl 5.8.8なのにエラーが出たのは謎ですね)
175:デフォルトの名無しさん
16/06/01 20:08:28.85 2S8m0KQ+.net
5.14(新しい) > 5.8(古い)だぞ
176:デフォルトの名無しさん
16/06/01 21:17:48.26 1kxD8r4Z.net
そいや5.24でpushやpop,shiiftなどにリファレンスを渡したときの
自動デリファレンスが止めになったのはなぜ?
折角5.14で入れた機能なのに。
177:デフォルトの名無しさん
16/06/01 21:25:33.54 BXoQUtbW.net
なぜも何も。
もともと「実験的に採用した」って宣言してるし、
失敗でした、って delta に書いてあるし。
178:デフォルトの名無しさん
16/06/02 14:00:14.87 tGqw3Zei.net
perlは、常にunstable ♪
オレの人生もunstable ♫
179:デフォルトの名無しさん
16/06/02 14:23:32.77 TTUXXyQU.net
Windows 7で
tree D: /f > tree_list.txt
これで書き出した物をperlでフルパスに変換したいのですが、
何か良いモジュールなどはありますか?
180:デフォルトの名無しさん
16/06/02 16:16:38.49 I/c4JKn/.net
File::Spec がそうかも。
181:デフォルトの名無しさん
16/06/03 02:13:33.36 7/QVUMn+.net
cmd.exe にまかせるがよろし
dir /s /b D: 2>NUL
182:デフォルトの名無しさん
16/06/03 12:58:52.91 a9xFHzmZ.net
>>177
いまいち良い方法が見つからなかった
再帰処理でがりがり頑張ったけど、ものすごい時間が掛かってしまった
>>178
ありがとう
無事いけた
コマンドライン詳しくないから、NULでひかかった
NULの代わりに、list.txtなどにするとサクッと記録された
速度滅茶苦茶早いなー
183:デフォルトの名無しさん
16/06/04 15:10:16.50 d7ojMir6.net
ループの条件を満たしてなくてもredoでループされるんだけど、そうゆうことでいいのかな
184:デフォルトの名無しさん
16/06/04 15:25:38.27 wKu/P36l.net
そのための redo だから。
URLリンク(perldoc.jp)
185:デフォルトの名無しさん
16/06/04 16:50:14.92 d7ojMir6.net
>redo コマンドは、条件を再評価しないで、ループブロックの始めからもう一度 実行を開始します
そうかそうか、これが欲しかった。どうも。
186:デフォルトの名無しさん
16/06/08 04:54:48.15 c/sFGpfw.net
ちょっと相談と言うか、バグの原因が想像つかなくてこまっちんぐなんだけど、
$| = 1;
for(.....){
................
.................
print $x;
}
みたいな感じでいっぱいプリントしてる時、
プロセス実行中は8.00KB(8192B)しか出力されないんだよね。
本来は9.22KB程度出力されるはずで、これはプロセスが終了したら出力される。
187:デフォルトの名無しさん
16/06/08 05:03:29.17 c/sFGpfw.net
ちゃんとcloseを記述したら直りました。
188:デフォルトの名無しさん
16/06/08 05:36:30.43 tfudflM8.net
どうしても即時出力したいなら、バッファリングで検索
189:デフォルトの名無しさん
16/06/08 15:34:08.08 1ofjxszc.net
10GBくらいのCSVで作成された辞書の文字を置換して出力する場合最も適切な方法はどんな感じ?
すぐ思いつくのは下記だけど、膨大な回数HDDにアクセスして大丈夫かと不安になるがバッファリングされるから影響はないかな?
open(IN,"<Wikipedia.txt");
open(OUT,">>test.txt");
while(<IN>){
$_ =~ s/<|>/<>/g;
print OUT $_;
}
close OUT;
close IN;
190:デフォルトの名無しさん
16/06/08 15:38:30.27 c/sFGpfw.net
そら最低の理論値でも10GB分HDDから読み出しして10GB分HDDに書き出ししないとな
191:デフォルトの名無しさん
16/06/08 15:56:29.67 1ofjxszc.net
>>187
単にリードするだけなら10GBは大丈夫だろうけど、
出力のバッファリングが甘いと、何度も書き込みHDDに凄い負担掛かるんじゃないかと思って・・・
因みに、昔は下記みたいにしてた、やたらHDDがガリガリ言ってた気がする
正しい方法はどうするのが良いのかと思ってね・・・
$| = 1;
open(IN,"<Wikipedia.txt");
while(<IN>){
open(OUT,">>test.txt");
$_ =~ s/<|>/<>/g;
print OUT $_;
close OUT;
print $count++;
print "\n";
}
close IN;
192:デフォルトの名無しさん
16/06/09 08:19:20.98 5xTa9iMx.net
>>186
環境によるのでもう少し小さいデータと思いついたコードでベンチ取れとしか。
URLリンク(perldoc.jp)
193:デフォルトの名無しさん
16/06/09 08:56:02.57 a3MG4bWs.net
>>186
単純な置換、大きなファイルサイズなら、
perl より sed 使ったほうが速いかもな。
194:デフォルトの名無しさん
16/06/12 12:28:41.66 JDueIOd3.net
どんな言語で書いても10GBのHDDをアクセスすること自体に変わりはない。
温度が上昇してエラーになるなら、扇風機で冷やしながら実行するとよい。
195:デフォルトの名無しさん
16/06/12 13:25:11.80 ve4Ih4ce.net
そうかなー
スクリプトだとなにやられてるんだか分からない印象だけど
196:デフォルトの名無しさん
16/06/12 13:26:20.33 0HO5/jac.net
そもそも10GBのテキストなんざ、
今の基準で言えば普通よりちょっとデカい程度。
日常的に扱かってる人間からすれば、質問自体が意味不明。
一回こっきりの捨てスクリプトなんだろうから、
検証以前にさっさと書いて終りにすりゃあいい。
197:デフォルトの名無しさん
16/06/12 14:32:37.22 wrakKGfW.net
でも>>188は毎回やってると流石にHDD痛めそうな気がする
ベストな方法や、やってはならない方法はあるでしょ
198:デフォルトの名無しさん
16/06/12 15:01:08.44 0HO5/jac.net
ちょっと待って>>188は、論外だろ?
これを含めて、ベスト云々を議論すんなら、
「初歩から教えろ」って言ってるのと変らんぞ?
普通に、>>186でいいじゃん。
>>187とか、>>191とか指摘してる通り、
どうあがこうが、10GBの書き込みは生じるんだから。
199:デフォルトの名無しさん
16/06/12 16:03:16.27 ve4Ih4ce.net
まぁ俺は10GB程度のファイル、頻繁にDLしたり削除したりコピーしたり色々してるけどな、ほぼ毎日。
200:デフォルトの名無しさん
16/06/12 18:22:13.25 wrakKGfW.net
プログラムもだけど$|=1;使って動作確認してたり、
バッファリング無し、バッチ処理で毎晩10GB1行毎の書き込みは流石にまずいんじゃない?
185も$|=1;使ったらどんな動作になるんだろ?
187はコードが見やすくなるからテストでは結構使ってる
そのまま忘れてて大きなファイルを解析させてたりもある
みんな185形式で書いてるの?
201:デフォルトの名無しさん
16/06/12 18:23:39.84 wrakKGfW.net
速度も考えて最近は配列に貯めてからすることがある
ただWindowsだとすぐout of memoryでる
202:デフォルトの名無しさん
16/06/12 18:58:39.76 ve4Ih4ce.net
まあ自分のPCならサブマシンでもメモリ32Gあるし別に・・・って感じだが
203:デフォルトの名無しさん
16/06/12 19:00:15.13 ve4Ih4ce.net
でもPerlってメモリの量が異常に増えるんだよね
10MBのデータを読み込んでごにょごにょしてたらなぜかメモリ200MBになってたり
普通にネイティブな言語使ったほうがいいのでは
204:デフォルトの名無しさん
16/06/12 21:45:18.08 0HO5/jac.net
どんなレス考えても、罵倒しか思い浮ばん。
HDDの負担以前の問題だよ。
open/closeを行数分繰替えすのが、
どれだけ時間の無駄(=マシンに負荷がかかる)か実例貼っとく。
$ perl -le ' sub ps { print `ps ux $$`}; ps ; for( 0 .. 9999999 ){ open my $h, ">>", "test.txt" ; print {$h} "h" } ; ps ;'
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
XXXXX 36471 13.2 0.1 2445400 3344 s002 S+ 8:24PM 0:00.16 perl -le sub ps { print `ps ux $$`}; ps ; for( 0 .. 9999999 ){ open my $h, ">>", "test.txt" ; print {$h} "h" } ; ps ;
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
XXXXX 36471 22.5 0.0 2445400 1664 s002 S+ 8:24PM 24:21.88 perl -le sub ps { print `ps ux $$`}; ps ; for( 0 .. 9999999 ){ open my $h, ">>", "test.txt" ; print {$h} "h" } ; ps ;
CPU time で24分だけど、実際には、9時半まで処理掛かってる。
205:デフォルトの名無しさん
16/06/12 21:49:23.64 0HO5/jac.net
$ perl -le ' sub ps { print `ps ux $$`}; ps ; open my $h, ">", "test.txt" ; for( 0 .. 9999999 ){ print {$h} "h" } ; ps ;'
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
XXXXX 40081 7.0 0.1 2445400 3324 s002 R+ 9:36PM 0:00.09 perl -le sub ps { print `ps ux $$`}; ps ; open my $h, ">", "test.txt" ; for( 0 .. 9999999 ){ print {$h} "h" } ; ps ;
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
XXXXX 40081 96.8 0.1 2445400 3340 s002 S+ 9:36PM 0:03.08 perl -le sub ps { print `ps ux $$`}; ps ; open my $h, ">", "test.txt" ; for( 0 .. 9999999 ){ print {$h} "h" } ; ps ;
$ ls -alh test.txt
-rw-r--r-- 1 XXXXX staff 19M 6 12 21:36 test.txt
今の時代の強力なマシンだろうが、こんだけ負担をかける事は、一昔前の人間だったら常識の範囲。
ちなみにフラッシュしようが、出力される量は変動しないんだから、
HDDの負担は変らん。と何回指摘されりゃ気が済むんだ?
206:デフォルトの名無しさん
16/06/12 21:54:39.02 0HO5/jac.net
>>201,>>202は、>>197へ。
207:デフォルトの名無しさん
16/06/12 23:18:14.97 wrakKGfW.net
>>202
今の時代マシーンパワーに物言わせてと言うことが意外と出来きてしまう
勿論、限度はあるけど
朝までに終わればいいわ程度で一度コード作ったらあとは触らないとかね
それと、昔デフラグし過ぎるとHDDが壊れるとか言われてた
出力される量でHDDの劣化が決まるって話だけど、細かいファイルを大量に書いたり作成するのはHDDにとって過大な負担になるんじゃない?
例えばだけど、100GBのファイル一つ書き込むのと、1バイトのファイルを100GB分毎回書き込むのでは違うと思うのだが?
>>199
配列をアホみたいに増やしたらメモリー(SSDで仮想いくらでも増やせるし)が一杯になる前に落ちる
208:デフォルトの名無しさん
16/06/12 23:41:21.09 0HO5/jac.net
>>204
意味不明。
細かいファイルの件なんか、俺のコードにも、>>186にも>>188にも
全く触れられてないんだけど?
百歩譲って、断片化の可能性が高まるのは、open/close を繰替えす
>>188のコード(膨大な処理時間中に他のIOが割って入る)だが、
擁護してんのか晒してんのかも不明。
209:デフォルトの名無しさん
16/06/12 23:49:21.59 xguVhByI.net
>>202
> ちなみにフラッシュしようが、出力される量は変動しないんだから、
> HDDの負担は変らん。と何回指摘されりゃ気が済むんだ?
出力される量は変動しなくても
書き込み回数は増えるじゃん。
フラッシュって何をやってるのか知らないの?
HDDに書き込まないでメモリに蓄えているものを
書き出す処理だぞ。
だからHDDの負担は増える。
210:デフォルトの名無しさん
16/06/12 23:52:30.66 xguVhByI.net
ちなみに、出力される量も実際に変動する。
HDDに限らないが通常書き込みっていうのは
ブロック単位で書き込まれる。
HDDの場合は512バイトだったり最近は4Kバイトだったりする。
1バイトの書き込みでも4Kバイト書き込まれるわけだ。
だからデータ量が1000バイトだった場合、
フラッシュ無しだと4KBの書き込みだが
1バイト毎にフラッシュすると、4KB×1000=4MBの書き込み量になる。
ファイルサイズはどちらも同じ1000バイトであっても
それを作るための書き込み量は違う。
211:デフォルトの名無しさん
16/06/13 00:08:38.69 GclKUW1b.net
>ちなみにフラッシュしようが、出力される量は変動しないんだから、
>HDDの負担は変らん。と何回指摘されりゃ気が済むんだ?
この二行は、あなたのご指摘通り。
訂正します。
>>188の
>$| = 1;
は、*OUTのフラッシュになんの関与もしていないけど。
212:デフォルトの名無しさん
16/06/13 00:32:22.24 Yqh2uzvZ.net
>>205
205-206が言いたいこと言ってくれた
擁護でも晒すわけでもなく、より適切な方法が見つかれば良いと思う
185にしても、もっとバッファリングしてやればHDDへのIOが減りHDDの負担は減るんじゃないかなと
標準だと4/8KBでフラッシュしてるよね、これを100MBにすればHDDへの負担はぐっと減りそう
今時のキャッシュ大きめのHDDでどの程度意味があるのか分からないし
寿命に影響するかどうかは分からないけど毎日繰り返す処理なら意味があるかも
>>208
そうなの?って思って調べてみた
URLリンク(mikeda.hatenablog.com)
みたらselectしないと効かないっぽいな
213:デフォルトの名無しさん
16/06/13 01:15:56.79 w1lAZiF2.net
夏場なんで、while ブロックの先頭に
sleep 2 unless $. % 10000;
を入れるとよい。2つの数字は調整してみてくれ。
214:デフォルトの名無しさん
16/06/13 15:19:04.03 bjrR9GHC.net
#!/usr/bin/perl -w
use strict;
use File::Path;
use IO::File;
sub diskstat {
system(
215:デフォルトの名無しさん
16/06/13 16:48:17.11 bjrR9GHC.net
URLリンク(ideone.com)
このプログラムの意図 : >>186 と >>188 の違いがディスクアクセスに及ぼす影響の検証。
明らかに >>186 よりも >>188 の方がシステムコールの回数が多い。
しかし、それだけでディスクアクセスに違いが出てくるわけではない。
実行時間を同程度にしてみたらどうなるだろうか。
実行する前に
grep sda5
の sda5 を環境に合わせて書き換えてほしい。
216:デフォルトの名無しさん
16/06/14 01:15:43.18 M6DJWkXG.net
> 実行時間を同程度にしてみたらどうなるだろうか。
実行時間を同程度にしたら、遅い方の書き込み量が減るから
比較にならんだろw
217:デフォルトの名無しさん
16/06/14 20:04:47.85 UhtJW9b9.net
プログラムを見てくれてないのかな……だとしたらその時点でもう対象外なんだけど。
ろくに見もしないで何を想像したの?
218:デフォルトの名無しさん
16/06/15 01:35:53.40 7O5/ia9k.net
そう言えば古いDiffソフト(AikoWin)やたらHDDガリガリ音鳴ってたな
あれ読み出しが少しずつでHDDに相当の負担が掛かるとか聞いたことがある
細かいファイルを書き込むのも良くないけど、自分でソフト作る時にには
呼び出しも気を付けないとまずいんだよなー
219:211
16/06/15 12:03:11.68 rzJhZO2i.net
もう少しマシなプログラムを書いてみたよ。
URLリンク(ideone.com)
Linux 限定だけど無修正で実行できる。
実行時間は 5 分くらいかかるよ。正確なデータを得るにはそうした方がいいみたいなんだ……
220:デフォルトの名無しさん
16/06/15 13:23:28.38 rzJhZO2i.net
自分の実行結果を書いておくよ。
sub f_a {
my $fh = IO::File->new( &genfn(),'>') || die( $!);
$fh->autoflush( 0);
$fh->print('h') foreach 0 .. 65535;
$fh->close;
}
sub f_b {
my $fh = IO::File->new( &genfn(),'>') || die( $!);
$fh->autoflush( 1);
$fh->print('h') foreach 0 .. 65535;
$fh->close;
}
sub f_c {
my $fn = &genfn();
foreach ( 0 .. 65535) {
my $fh = IO::File->new( $fn,'>>') || die( $!);
$fh->print('h');
$fh->close;
}
}
これらを 16 回ずつ実行した結果、f_a,f_b はそれぞれ 2232 セクタ、
f_c は 2224 セクタ書き込んだみたいだよ。もちろん書き込んだ回数だよ。
221:デフォルトの名無しさん
16/06/15 17:57:12.29 rzJhZO2i.net
URLリンク(ideone.com)
もう少しユーザーフレンドリーな感じにしてみたよ。これで最後だよ。
Windows ではこういう情報を得る方法は無いの?
非同期書き込みが無いのなら彼らの言うことも間違いではないんだけど。
222:デフォルトの名無しさん
16/06/18 11:42:41.43 zTifxauk.net
$ perl -p -e ~
となっているのですが、-p と -e の意味を教えてください。
223:218
16/06/18 13:00:49.64 zTifxauk.net
一行構文のOPだとわかりました。
しかし、
C:\perl\bin\perl -e 'for $i (@ARGV) { print $i ,"\n";}' args1 args2 args3
をWindows環境で実行すると
Can't find string terminator "'" anywhere before EOF at -e line 1
と出てしまいます。
解決方法を教えほしいです。
224:デフォルトの名無しさん
16/06/18 13:07:12.42 FKPQs3z7.net
'print "\n"'ではなく"print qq(\n)"のように
225:デフォルトの名無しさん
16/06/18 14:22:55.12 zTifxauk.net
C:\perl\bin\perl -e 'for $i (@ARGV) { "print $i ,qq(\n)";}' args1 args2 args3
で試したがダメでした…
226:デフォルトの名無しさん
16/06/18 14:58:07.42 h9LNivvl.net
>>222
227: 俺は昨日から始めたんで確かなことは言えないけど、 DOSプロンプトだと、''で括ってもダメだったよ (何か設定があるんだけど昨日からなんで...) 例えば、 perl -e 'print "hello"' は perl -e "print \"Hello World\n\"" ってしないと動かなかった
228:デフォルトの名無しさん
16/06/18 15:22:54.54 h9LNivvl.net
よくよく考えたら、コマンドプロンプトで''はいけるはず無いよね
だって、まずコマンドプロンプトで命令が解釈されるわけだから
'a b'だと、連続した文字列とはならずに
'aとb'の2つの引数が指定されたと受け取られちゃうわけだしね
229:デフォルトの名無しさん
16/06/18 15:30:14.88 xZeqh3Cr.net
Perl の文法上
"\n"
の代わりに
qq(\n)
と書けますよ……という話じゃないのかなあ。
とりあえず、ググって見つけたページ
URLリンク(thinca.hatenablog.com)
URLリンク(up-cat.net)
相変わらずカオスなんですね。それがいやで Linux に乗り換えたのは前世紀のことなのに……
230:デフォルトの名無しさん
16/06/18 17:13:02.52 Q2VQ6qXf.net
DOS/Windowsコマンドプロンプトのクォートは "
UNIXのシェルのクォートは '
ただそれだけ
コマンドプロンプトのクォートとして "" を使っているから、Perl部分は
qq() を使ってる
231:デフォルトの名無しさん
16/06/18 17:51:48.00 5RdW1n8d.net
すごいにゃー。ワシは動けばいいやなんで。
232:デフォルトの名無しさん
16/06/18 17:53:59.52 qpxG5nAO.net
動かないんだろ?
233:デフォルトの名無しさん
16/06/18 20:50:09.79 QKdVDmdU.net
PowerShell_ISE では、どうなる?
234:デフォルトの名無しさん
16/06/19 20:43:06.86 p98kttl2.net
ファイルの中身じゃなくて、ファイル名をバイナリかなんかで扱いたいときはどうすれば良いでしょうか
どっかの国のどっか語でファイル名書いてあって、ファイル一覧を入手したら全部文字化けみたいな感じになってて困った
235:デフォルトの名無しさん
16/06/19 22:30:28.43 /GELYJ8A.net
まず、そのファイルが壊れてないかどうかエンコーディングが判らないことには確認しようがありません。
そして、そこに書かれているファイル名が正しいとしても、問題はそのファイル名で何をするかです。
ファイルを作成するとしたら少々困難を伴うと思いますが、何をしますか?
もう少し説明が欲しいです。
236:デフォルトの名無しさん
16/06/19 23:56:05.73 p98kttl2.net
1: ファイルは壊れてないです。あとファイルの中身はどうでも良くて困ってるのはファイルですね。
2: こちら側からバイナリを含めて希望してるのでそもそも文字コードは問わないです。
なおwindowsですので強制的な解釈としてはcp932でしょうか。文字かどうかは不明ですか。
3: 書いてある通り、ファイル一覧を入手したいです。(と言うよりすでにしました)。その時点での文字化けについてです。
237:デフォルトの名無しさん
16/06/20 01:41:13.70 Nxz2d29B.net
文字化けは君の環境のフォントの問題では…
238:デフォルトの名無しさん
16/06/20 01:52:28.59 3dbzY2ue.net
>>225
単にprintのあと改行したいだけなら、面倒なエスケープを避けてsayを使うのが楽だと思う。
perl -E ‘say “hoge”;’
239:デフォルトの名無しさん
16/06/20 01:55:16.19 3dbzY2ue.net
>>232
CPANにあるWin32::Unicodeを使ってみてはどうだろう。
240:デフォルトの名無しさん
16/06/20 02:14:22.79 JJJI2UNm.net
ちゃんと話を追ってればシングルクォートではコマンド文字列をperlに渡せないってことを理解できるのに
だから>>221では全体をダブルクォートで括ってるわけ
241:230
16/06/20 13:40:47.81 cF0IFcLP.net
>>232
「そのファイルが壊れてないか」と書いたのはファイル一覧のことだったんですが……
まあ、それは置いといて。
困っていると言われても、何をお望みなのかよく分かりません。
マルチバイト文字を作成者が意図した通りの文字として読みたいということなら、
やはりエンコーディングを知る必要があります。
そして、そのエンコーディングを扱うことが出来るソフトウェアと、もちろんフォントも必要です。
どんな環境で、どこからどのような手段で入手して、何をして文字化けだと思ったのか、
それがどうなるのが望みなのかを書いていただけないと、お役に立てそうもありません。
242:デフォルトの名無しさん
16/06/20 14:10:59.68 ppvG3ddJ.net
ファイル名はテキストだろ。
バイナリのファイル名など、聞いたことがない
フォントが無いだけで、たぶん正常だろ。
それか、ファイル一覧を表示している、端末の文字コードが違うだけ
そのファイル名をエディタにコピーして、色々な文字コードに変えて、試してみる
243:デフォルトの名無しさん
16/06/20 14:43:14.96 og12Zqf+.net
先日も申しましたが、ファイル名はOSの仕様によってcp932扱いで表示されたバイナリです。
windowsにおけるバイナリとテキストの違いは、改行など一部の文字の解釈です
すなわち、ファイル名を入手した時点で破損しています
244:デフォルトの名無しさん
16/06/20 15:21:44.17 7O0ObdXP.net
うーん・・・
関係ないけど
ハートマークのファイル名作ったけど、
ちゃんと表示できたよ
245:デフォルトの名無しさん
16/06/20 15:27:52.95 JJJI2UNm.net
>>239
「ファイルはテキストだが何のコードでエンコードされたものかわからん」をcp932で開いた
ではなくて
「cp932でエンコードしてしまって、もう元のファイルの情報は欠けてしまった文字化けファイル」を開いた
ってことか?
246:デフォルトの名無しさん
16/06/20 16:05:49.21 S2CnEqh7.net
>>239
破損とは何か。期待値と実際値を言わないとわからん
247:デフォルトの名無しさん
16/06/20 16:53:54.14 cF0IFcLP.net
もう一度聞くけど、どこからどのような手段で入手して、どうやって見てるの?
どうなってほしいの? 使ったソフトウェアの仕様はちゃんと理解できてるの?
248:デフォルトの名無しさん
16/06/20 23:26:05.47 og12Zqf+.net
Aディレクトリの中のファイル名をopendirでとってくる。
この時のファイル名ってどう言う扱い?バイナリ?テキスト?コードは?フラグは?
とってきたらそれがすでに破損してて開くこともできない。
249:デフォルトの名無しさん
16/06/20 23:27:22.44 og12Zqf+.net
もちろん cp932で定義されてる範囲のバイト列ではバグらないよ
250:デフォルトの名無しさん
16/06/21 00:30:40.48 zxMwhnoQ.net
そうですか。
で?
251:デフォルトの名無しさん
16/06/21 12:21:49.21 yHwsrvxs.net
-------------------------------------------------------
Perl に関係ない話題は、以上で終了。
252:デフォルトの名無しさん
16/06/22 02:03:09.88 pkNIGL7K.net
>>ファイルの中身じゃなくて、ファイル名をバイナリかなんかで扱いたいときはどうすれば良いでしょうか
特別なことをしなければバイナリで扱うことになる。むしろファイル名は文字列では扱(え|わ)ない。
253:デフォルトの名無しさん
16/06/22 06:43:08.46 dLzJGxXLx
PerlはA系を使うクソ仕様だから、直接win32叩いてU系でディレクトリを読みだすか、
>>235の言うように、Win32::Unicodeでも使う。
254:デフォルトの名無しさん
16/06/22 17:07:36.10 NJ9t5GVO.net
Perlを使って下記のように2文字半角スペースを入れたいのです。
0015000008006a3376 -> 00 15 00 00 08 00 6a 33 76
下記を教えて貰いましたが旨く出来ません・・・アドバイス願います。
$ perl -p -e 's/(..)/$1 /g;'
001500 -> 00 15 00
255:デフォルトの名無しさん
16/06/22 17:34:24.64 MK9gPhs4.net
いや、ちゃんとその通りになったけど……どううまくいかなかったの?
末尾にスペースが入っちゃいかんとかなら、方法はあるけど。
256:デフォルトの名無しさん
16/06/22 17:34:34.20 zY+0G6HH.net
それでできたけど。
257:デフォルトの名無しさん
16/06/22 17:44:10.61 NJ9t5GVO.net
試したのは下記ですが、進まないと言うか終らないんです。
連続数字は変えますが・・・123456に変更
perl -p -e 's/ 123456/$1 /g;'
perl -p -e 's/(123456)/$1 /g;'
perl -p -e 's/( 123456)/$1 /g;'
perl -p -e 's/\(123456\)/$1 /g;'
258:デフォルトの名無しさん
16/06/22 18:37:34.12 ZXocXNxo.net
>>253
いや、そのドットが重要なのでは…?
259:デフォルトの名無しさん
16/06/22 19:34:58.14 NJ9t5GVO.net
>>254
色々と試行錯誤した中で試してみましたが、ドットを入れるならスペース入れても
同じような・・・
perl -p -e 's/(12.34.56)/$1 /g;'
260:デフォルトの名無しさん
16/06/22 19:45:27.49 9eEpB7QB.net
もう連続した数値を2桁ずつ区切るとは話が違ってきてるぞ
まあ色々試しているんだろうが、まず正規表現をちゃんと勉強した方が結局は早道だよ
261:デフォルトの名無しさん
16/06/22 20:13:59.90 SZhXzwW9.net
>>255
正規表現を使っているという事は理解してる?
ドット一つは「任意の一文字」を意味しているのだけれども…
262:デフォルトの名無しさん
16/06/22 20:14:45.08 GjDXavCQ.net
$string = '012345';
$string =~ s/(..)/$1 /g;
263:デフォルトの名無しさん
16/06/22 20:36:25.70 jdKVcriH.net
s/(..)/$1 /g
( ) で囲むと、キャプチャーできて、$1~9 で後方参照できる。
. は、任意の1文字だから、.. で2文字
その2文字を、$1で参照して、その後ろに、半角空白を付けている。
$1の後ろに、半角空白があるだろ
g(global)フラグは、すべて置換する
だから、ab なら、ab半角空白 となる。
正規表現の説明を参照
264:デフォルトの名無しさん
16/06/22 20:38:53.55 q7cmPaAS.net
質問者は本当にやりたいことを隠して質問してるからもうどおでもいいけど
なぜ perl -p -e 's/(..)/$1 /g;' でうまくいっちゃうんだろうね。
ぱっと見だと
001500 -> 00 01 15 50 00
になってもおかしくないのになと思った。
265:デフォルトの名無しさん
16/06/22 21:11:10.25 NJ9t5GVO.net
>>251->>260 皆さまスレ汚してすみませんでした。
Perlは使うばかりで、プログラミングはど素人です。
(..)は顔文字だと思っていました・・・お恥ずかしい
○○○@H170M-PLUS ~
$ perl -p -e 's/(..)/$1 /g;'
123456
12 34 56
あ~スッキリした。
有難うございました。
266:デフォルトの名無しさん
16/06/22 22:35:11.08 jdKVcriH.net
>>260
1234なら、12 23 34 にはならない
.. は2文字に一致するから、12に一致する。
すると次は、3からスタートするから、34に一致する
つまり、一致した次の文字から、スタートする
267:デフォルトの名無しさん
16/06/22 23:26:29.09 q7cmPaAS.net
なるほろー。
最初はこんな感じが頭にうかんだけど冗長だね。ワンライナー3級ですな。
perl -ne 'for( $i = 0; $i < length() ; $i += 2 ){ print substr($_,$i,2)" " }'
268:デフォルトの名無しさん
16/06/23 09:02:33.36 9bmKWFfz.net
もう顔文字にしか見えない(..)どうしてくれる
269:259
16/06/23 10:28:45.02 mgh0+o+/.net
>>264 _(_^_)_ m(_ _)m
270:デフォルトの名無しさん
16/06/23 14:28:28.61 Fa0lhzij.net
>>244
もう見てないと思うけど、一応書いとくよ。君はまず、
Perl readdir Windows
でググってみるべきだった。
271:デフォルトの名無しさん
16/06/28 23:22:27.94 sQcX3Fgh.net
複数の文字列フィルタ (grep や s) を連続で通す書き方って、どうだったっけ?
ある文字列を
・grep でフィルタ → grep で再度フィルタ → s で置換 → split で分割 → 先頭要素だけスカラー変数に格納
これをスマートに(可能ならば1行で)やりたい。
272:デフォルトの名無しさん
16/06/28 23:31:42.78 IoEHfO5D.net
@result = map {(split //)[0]} map {s//;$_} grep {} grep {} @strings;
こんな雰囲気でええんでないかい?
273:デフォルトの名無しさん
16/06/29 01:53:58.12 edw32cCt.net
mapやgrepを一行で複数書くのはアホの代表だと思いまーす
274:デフォルトの名無しさん
16/07/02 14:22:47.36 UtcihNE2.net
基本的に日本語で書いたときの逆順に記述するだけなんだけどね
マニュアル読んで分からなければたぶん無理だろう
275:デフォルトの名無しさん
16/07/02 15:01:42.19 9DiVepfM.net
批判するならコードかけや
276:デフォルトの名無しさん
16/07/04 00:55:08.84 xC//1vCA.net
id="011"<width>1</width>
この文字列から011だけ正規表現で抜き出す方法教えてください
idの数値だけを抜き出したい
277:デフォルトの名無しさん
16/07/04 00:57:21.80 eDhj/6QR.net
>>272
これで文字列全体?
その前後にいろんなタグがありそうないやな予感がするんだが?
278:デフォルトの名無しさん
16/07/04 01:08:21.29 xC//1vCA.net
>>273
ありますが、かなり長いxmlなので必要だと思った部分だけ抜き出しました
もう少し抜き出してみるとこんな感じです
source="URLリンク(hogehoge.xml") />
<name="foo" id="0110"
このような文字列が大量にあってそのなかからidの数値だけが欲しいです
279:デフォルトの名無しさん
16/07/04 01:29:50.90 xC//1vCA.net
>>272
/id="([0-9]*)/g
これでできたような気がします
280:デフォルトの名無しさん
16/07/04 22:53:37.85 0oVcG5wM.net
HTMLパーサーを使うのが一番簡単で正確
コメントの中にHTMLがあったらどうするんだ?
つーか正規表現を乱用するな。
281:デフォルトの名無しさん
16/07/04 22:54:10.05 0oVcG5wM.net
XMLパーサーか
282:デフォルトの名無しさん
16/07/05 17:36:47.05 QGn+r4HY.net
>>272 だとタグの外にあるように見えるのに >>274 ではタグの中になってる。
だから静観してたけど、結局どっちなの?
283:デフォルトの名無しさん
16/07/05 17:48:38.40 gL12vNid.net
なんか最初のだと後に<width>のある特定のidの値が欲しいのかな?って思ってたけど
そうでもなくて全部のidの値でいいんだってのが>>275でわかったんで拍子抜けしたところ
284:デフォルトの名無しさん
16/07/08 23:33:47.61 l/0Eyz2z.net
うん、自称ベテランにありがち。
285:初心者です
16/07/09 07:48:40.33 g+Tip2fR.net
宜しくお願いします。
$ua->cookie_jar(HTTP::Cookies->new(file => "cookie.txt",autosave => 1));
でcookie.txtにクッキーを取得できるのは分かりますが
削除したい場合にはどのようなコードを書くんでしょうか?
286:デフォルトの名無しさん
16/07/09 16:55:14.14 ce8+Vk05.net
そういえばいつもお世話になってるのに知らないな……と思ってマニュアルを読んでみた。
どうやら clear を使うらしいな。まずは scan で中身を見てみるのが良さそうだ。
これ以上は説明のしようがない。自分で頑張ってほしい。
287:デフォルトの名無しさん
16/07/09 21:07:47.73 g+Tip2fR.net
ウィッス
288:デフォルトの名無しさん
16/07/11 17:00:44.97 ELH2iWp3.net
マルチプロセス処理の Parallel::Prefork は、
Windows の StrawberryPerl か ActivePerl に、インストール可能ですか?
URLリンク(pass.cpantesters.org)
Strawberry、Active、旧バージョン、32bit、64bitなど色々試したけど、
>Can't locate Parallel/Prefork.pm in @INC (you may need to install the Parallel::
>Prefork module) (@INC contains: C:/...
289:デフォルトの名無しさん
16/07/12 01:04:59.55 BoIJCZeB.net
cpanmやらppmでやってみたら
290:デフォルトの名無しさん
16/07/14 20:00:42.23 GgJblQeZ.net
突然文字が正しく表示できなくなるゴミPerl
人をイラつかせるために作られた言語だなこれ
存在価値がないどころか存在事態が害悪
早く消滅すればいいのに
291:デフォルトの名無しさん
16/07/14 20:06:36.90 GgJblQeZ.net
マジで使い物にならない
「ゴミPerlで文字がいきなり変になる対処」
「産廃Perlの文字取り扱いがおかしいのをなんとかする方法」
「糞Perlが文字をまともに扱えないことへの特効薬」
もう数時間検索してるが解決案が出てこない
こんなに酷い言語はPerlくらい
292:デフォルトの名無しさん
16/07/14 20:15:06.51 GgJblQeZ.net
Perlは本物のゴミ
文字すらまともに表示できないとか利用価値なし
293:デフォルトの名無しさん
16/07/14 20:25:10.95 GgJblQeZ.net
Perlのゴミなところ
文字「あ」すら表示すらできないためとてつもなくイライラする
294:デフォルトの名無しさん
16/07/14 20:28:38.21 GgJblQeZ.net
明日納品なのに解決する兆しなし
こういうときは一から書き直すことも多いが何千行もあるシステムを明日までに書き上げられるわけもない
本当にPerlはゴミすぎる
295:デフォルトの名無しさん
16/07/14 23:24:13.01 RqQ+21r9.net
だからバイナリで扱えと口が酸っぱくなるほど言ってきたわけで聞き入れないお前が悪い。
296:デフォルトの名無しさん
16/07/15 08:14:17.03 rP1+mz2q.net
文字コードを理解してないだけでは・・・?
297:デフォルトの名無しさん
16/07/15 08:34:29.93 XWIPLqFW.net
テンプレの>>5 を誰かが勝手に変えたからだ。
元々はこうなっていた。
スレリンク(tech板:4番)
------------------------------------------------------------
# [Perl 日本語処理の基礎の基礎]
# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。
# 入出力ともシフト JIS 形式のファイルまたは DOS 窓を想定しています。
# まず、以下の行を先頭に入れて下さい。
use utf8;
use open IO =>
298:デフォルトの名無しさん
16/07/15 08:36:25.21 XWIPLqFW.net
ありゃ?途中で切れちゃった。>>293のリンク先見てね。
299:デフォルトの名無しさん
16/07/15 09:08:17.43 ATzxunsm.net
とりあえず Data::Dumper と PerlIO::get_layers を使えば助けを求めるのに役立つと思うが
責任転嫁しかできないゴミに言ってもなぁ……
300:デフォルトの名無しさん
16/07/15 12:22:26.70 XWIPLqFW.net
>>287 それからな、
> ゴミPerl
> 産廃Perl
> 糞Perl
どれも、なかなかいいところを突いているが、ちょっと外れているな。
正解は「ガラクタ」だ。
Perl とは「pathologically eclectic rubbish lister」
(病的折衷主義のガラクタ出力装置)の 略なのだ。
301:デフォルトの名無しさん
16/07/16 12:58:34.75 STpjI2h3.net
インコード
使ったソースは
ウンコード
302:デフォルトの名無しさん
16/07/17 01:45:28.71 T2eP0LKz.net
内部エンコードはperl独特だよね。
扱えれば入力と出力がどんなエンコードだろうが無双出来るけど
303:デフォルトの名無しさん
16/07/17 09:40:41.84 kAN9hSRv.net
>>296
「Perl を愛する人にとっては」と前置きするのを忘れてるぞ。
304:デフォルトの名無しさん
16/07/17 13:59:57.99 D/SlpqZf.net
まぁperlなんて使い物にならないでしょ
use utf8;付けたらそれまで文字化けしなかったUTF8の文字列が文字化けしたし
305:デフォルトの名無しさん
16/07/17 14:42:10.28 F+fhoGjl.net
なにその理論(笑)
まぁ使いにくいのは異論ないが
306:デフォルトの名無しさん
16/07/17 16:24:12.49 Cv1W2kE4.net
ではperlじゃないならなにがいいのかな。python?
rubyはパイプ記号が変なところで出てくるからちょっと違和感有り。
307:デフォルトの名無しさん
16/07/17 17:57:00.54 PyzTEoPA.net
= パイプ記号
308:デフォルトの名無しさん
16/07/17 17:57:53.58 F+fhoGjl.net
賭けてもいいが、文字コードが分からないのをPerlのせいにしてるやつが、
自分で1からプログラミングしたら壊滅的な状況になると思う。
309:デフォルトの名無しさん
16/07/18 02:39:59.89 e41bhxXR.net
でも、かつて壊滅的な状況じゃなかったよね?
310:デフォルトの名無しさん
16/07/18 03:14:08.10 GZVIgCur.net
>賭けてもいいが、文字コードが分からないのをPerlのせいにしてるやつが、
>自分で1からプログラミングしたら壊滅的な状況になると思う。
意味不明な言動をする気違い。
「賭けてもいいが、腹が痛くなるのを残飯のせいにしてるやつが、
自分で1から料理したら壊滅的な状況になると思う。」
と言ってるのと同等で意味不明。
気違い。
311:デフォルトの名無しさん
16/07/18 07:46:08.11 C0GpTohk.net
自分で料理出来るのであれば、残飯なんて最初から食べないよ…
残飯を食べるという事は、食べざろうえない理由があっての事だろうに…
312:デフォルトの名無しさん
16/07/18 08:14:55.04 dOZOPpl8.net
すくなくとも腹痛を人のせいにしなくてすむんじゃね?
313:デフォルトの名無しさん
16/07/18 14:09:08.76 UhcVRSnP.net
高級料理も残せば残飯になるのさ。
最後の姿を見ただけで、本来の姿を判断するのは
無能というもの。
314:デフォルトの名無しさん
16/07/19 09:36:50.47 BbD/ZGSl.net
文字コードが分からないのをPerlのせいにしてるのは馬鹿の上限を突破してるが、
腹痛を残飯のせいにするのは間違ってないだろう。食ったと言う意味では馬鹿だが
315:デフォルトの名無しさん
16/07/19 14:33:33.84 kU2ISgr0.net
どんなに文字コードを理解している人間でも文字をまともに扱えないピログラム言語の前では無力
その程度のことも分からないのかはたまたPerlがまともな言語だと錯覚しているのか
もし錯覚しているならば自分の使っている言語についてほとんど何も知らないということになる
まずはその自覚をすべきである
316:デフォルトの名無しさん
16/07/19 15:10:05.04 QuuYpuW+.net
参考までに聞くけど、文字をまともに扱える言語って何?
317:デフォルトの名無しさん
16/07/19 15:23:05.53 BbD/ZGSl.net
全行つっこみどころ満載なやつにかまってはいかん
318:デフォルトの名無しさん
16/07/20 17:32:04.55 gGnx4FL9.net
んで俺も文字をまともに扱える言語がなにか気になるわけだが
310とは別人
319:デフォルトの名無しさん
16/07/20 19:56:54.60 lrew/2ZZ.net
文字は知らんけど、
Perlってあらゆる面でPHPより劣ってるよな。
320:デフォルトの名無しさん
16/07/20 20:04:27.70 y5BMpkOv.net
PHPってHTML言語じゃないの?比較の対象にもならないと思うんだが。
rubyに負けてるというならまだわかるけど。
321:デフォルトの名無しさん
16/07/20 21:52:53.39 gGnx4FL9.net
PHPてあんた
322:デフォルトの名無しさん
16/07/20 23:37:17.38 E+SEwayU.net
>>316
HTML言語ってなんやw
HTMLに埋め込めるってだけでごく普通の
プログラム言語だぞ。
どれくらい普通かというと以下の機能が搭載されてる
・クラス
・インターフェース
・トレイト
・ラムダ
・クロージャー
・名前空間
・例外
・ジェネレーター
・ガベージコレクション
あと言語機能じゃないが、CLIプログラムの作成や
ウェブフレームワークなどもある。
323:デフォルトの名無しさん
16/07/20 23:43:45.09 lrew/2ZZ.net
>PHPってHTML言語
Perl厨は他の言語をロクに知りもしないで
敬遠してるんだろうな。
だからPerl厨はいつまで経っても
エンジニアとして半人前なのだろう。
324:デフォルトの名無しさん
16/07/20 23:47:10.52 E5afqhTD.net
309ではないがC言語。もちろんPerlもだ。
ついでなんで
s/ピログラム言語/プログラム言語/;
325:デフォルトの名無しさん
16/07/20 23:55:15.99 gGnx4FL9.net
Cって純粋なC?
ご冗談を。
あれは何も文字を扱ってないよ。
自分で作って下さい、ってね。
326:デフォルトの名無しさん
16/07/20 23:58:27.03 gGnx4FL9.net
>>318
だからなに?
その機能'(笑)はわざわざ書かなくてはならないことなの?
だから文字の扱いに対してもおかしな考えを持つんだね。
文字を扱うのは言語の機能(笑)が大事なんだってね。
基本プログラムが出来ない人はスクリプトが持つ機能とやらに注目したがる。
自分でプログラミングできないからね。
327:デフォルトの名無しさん
16/07/21 00:13:43.65 qEfVH42B.net
普通のunix処理系にperlは入ってるけどPHPは入ってないでしょ。
Webプログラミングなんてどうでもいい。システムプログラミングとか
テキストマイニングしたいんだって動機から入るとぱっと見PHPは目に入らないよ。
紹介がWeb用ですなんだし。
幼児的に誹謗中傷しないで諭すコミュ力をつけたほうが。。
328:デフォルトの名無しさん
16/07/21 01:02:15.71 eeWcI0WT.net
PerlとPHPを比較するって事自体、CGIの定番としてPerlが使われはじめた15~20年ぐらい前の話だから
329:デフォルトの名無しさん
16/07/21 02:09:41.10 vaQfL518.net
>>322
> その機能'(笑)はわざわざ書かなくてはならないことなの?
わざわざ書かないとわからないでしょ?w
これ以外に何が必要なんだい?
言ってみ。
330:デフォルトの名無しさん
16/07/21 02:18:26.64 QEbE4SDT.net
>>321
お前のいう文字は文字列のことか?
331:デフォルトの名無しさん
16/07/21 09:47:01.78 oSsee0hG.net
質問者が言う文字だ
質問じゃなくて子供の八つ当たりに見えたが
332:デフォルトの名無しさん
16/07/21 10:12:11.24 wN4yZ2B5.net
普通のunix処理系wwww
普通てwwwwwwwwwww
こんな曖昧でいい加減な単語を使って反論になると思ってんのかwww
こんな客観的数値も示せない思い込みが根拠になるなら
普通の人間はPerlなんざ使わねーよwwwwwwwww
普通の人間はなwwwwwwwwwwwwwwwwwwwwwww
333:デフォルトの名無しさん
16/07/21 14:22:48.08 +jQ9eKqj.net
perl-5.24.0.tar.gz 開いて見てみたけど
ソースはC言語で書かれているんだよね
作った人は「自分で作って下さい」を実行したんだろうね
334:デフォルトの名無しさん
16/07/22 00:54:29.43 ak+a/2Hs.net
文字を扱うのは人間。Perlが扱っているのは文字コードな。
335:デフォルトの名無しさん
16/07/22 02:53:58.61 jSbimIDf.net
>>318
post/getがよしなにスーパーグローバル変数(笑)に入ったり
何もしなくてもエラーがブラウザで見られたり(言語がhttpプロトコルを理解できてる?)
iniファイルで挙動が変わったり
ごく普通のプログラム言語からはかけ離れてるだろ
Javascriptの方がよっぽど普通なんだけどなぁ
336:デフォルトの名無しさん
16/07/22 03:14:36.53 7iYsigKa.net
> post/getがよしなにスーパーグローバル変数(笑)に入ったり
それは10年以上前の話だよw
知識止まってんなぁ。
337:デフォルトの名無しさん
16/07/22 03:31:19.54 jSbimIDf.net
>>332
お前の使ってるナウ(笑)なPHPはquerystringに値いれてもvar_dump($_GET)するとnullなの?
言語って10年経とうが根本的な部分はそうそう変わんないだぜ
338:デフォルトの名無しさん
16/07/22 04:41:07.53 7iYsigKa.net
>>333
Perlでは グローバル変数$ENVの$ENV{'QUERY_STRING'} に
querystringが入るけど、それと何が違うん?
339:デフォルトの名無しさん
16/07/22 09:01:23.54 jSbimIDf.net
>>334
それはCGIとかがquerystringを環境変数へセットしてるだけであって(postは標準入力)
環境変数や標準入力、argsを読む機構はperlに限らずどの言語で備えてるでしょ。
デリミタも指定せずname[]のようなオレオレ仕様で勝手に解釈して予め変数に入れるのを
言語のレイヤーで行うのはphpぐらいしか思いつかない。
340:デフォルトの名無しさん
16/07/22 09:13:02.54 7iYsigKa.net
>>335
え?「思いつかない」ってだけ?w
341:デフォルトの名無しさん
16/07/22 09:14:42.73 DCfhc9fh.net
PHPの話してる時点でズレてるとは思わんのかね
342:デフォルトの名無しさん
16/07/22 13:21:21.28 9lWfzFCE.net
いきなりなんの前触れもなかったし、何言ってんだ?と思ったら、PHPのdisりかよ。
知らんがな…
343:デフォルトの名無しさん
16/07/22 14:07:48.50 jisYPSD0.net
>セットしてるだけ
だけw
344:デフォルトの名無しさん
16/07/22 14:50:50.79 jisYPSD0.net
言い訳が苦しくなってくると、最後に「だけ」を付加するPerl厨
窃盗犯が「ちょっと借りただけだろ」と言い訳するのと同じ
犯罪者と同じ思考パターンを有するPerl厨
ちなみに犯罪者と同じ思考パターンを持つヴァカがPerlを選ぶのか
Perlを使ってるうちに犯罪者と同じ思考パターンを持つようになるのかは不明
どちらにせよPerl厨はヴァカで犯罪者予備軍ということに変わりはない
まともな人間はPHPを選ぶ
345:デフォルトの名無しさん
16/07/22 19:55:10.85 d984b3j7j
Perlと同程度に時代遅れなPHPを出してくる辺りが面白い。
2chという時代遅れな掲示板に、これからも、ずっと変わらずに居て、PHPを推し続けるのだろうな。
346:デフォルトの名無しさん
16/07/22 22:02:06.14 ZdAo90QB.net
今時仕事にも趣味にも役に立たないPHP選ぶバカはいないだろ
347:デフォルトの名無しさん
16/07/22 23:10:31.36 jSbimIDf.net
>>336
php以外の該当する言語を一つあげるだけで完全に論破できるチャンスだよ!
348:デフォルトの名無しさん
16/07/22 23:38:00.41 SRU6z2ZT.net
はいはい。犯罪者予備軍ね。NGにしときますわ。
やりたいことやりたい人は処理系にこだわりはないのにアホか。
コード書けない中学生がVBよりVCと言ってるのと変わらんわ。
349:デフォルトの名無しさん
16/07/23 01:01:50.42 tWjtYIW6.net
>>343
逆だろ?
PHPが他の言語と一緒だということを証明するために
他の言語でもあるような機能を言う。
PHPは他の言語と同じであることを示すことが、正しい論破の仕方だ。
PHPは「他の言語+αの機能」であるという事実に対して
それと同じものを出すことで、何を論破することになるのか?
350:デフォルトの名無しさん
16/07/23 02:01:49.49 bOUqJlZz.net
そろそろ邪魔くさくなったから消えてほしい
劣等感のかたまりは迷惑関係なく必死で長所をアピールしはじめるってね
適切なスレでやってくれんかね
351:デフォルトの名無しさん
16/07/23 02:30:45.09 Z+5onCph.net
嫌なら見なければいいのに
他人にあっちいけとか指示する池沼っているよな。
自己中心的な池沼のお手本。
352:デフォルトの名無しさん
16/07/23 08:35:47.91 rC+TU0A1.net
他プロセスでファイルをopenしているときにそのファイルをrenameしようとすると
renameできないみたいだけどうまくrenameする方法は?
353:デフォルトの名無しさん
16/07/23 10:06:58.15 I+uJVTmO.net
close
354:デフォルトの名無しさん
16/07/23 11:14:44.62 rC+TU0A1.net
>>349
それだとopenとcloseする間にrenameが割り込むとだめ
そこで自分で方法を考えました
まずディレクトリにaccess_kinshi.datというファイルを作ります
このファイルが存在している間は他プロ�
355:Zスでこのディレクトリにあるファイルは全てアクセスできないものとする そしてディレクトリ内にあるファイルを全てrenameする そのあとaccess_kinshi.datファイルを削除すればいいということです
356:デフォルトの名無しさん
16/07/23 11:20:06.22 I+uJVTmO.net
前提条件が変わってますけど
357:デフォルトの名無しさん
16/07/23 15:21:23.54 bOUqJlZz.net
他のプロセスってなに?
どっちもPerlで自分の作った物なら、ファイルロックでも使うと良い。
自動待機してくれる
358:デフォルトの名無しさん
16/07/23 19:27:38.24 IQFGkMCr.net
後方参照で教えていただきたいことがあります。
A 80 90
(空白の部分はタブかスペース)
と書いてあるファイルの80とか90の部分を書き換えたいのです。
perl -pe 's/^([A-Z])(\s+)([0-9]{2})(\s+)([0-9]{2})/$1$2$3$4$5/' file で
マッチした部分を参照できるのはわかっているのですが、この場合$3の「80」を「1」にするには
どのような方法をとればよいでしょうか?
perl -pe 's/^([A-Z])(\s+)([0-9]{2})(\s+)([0-9]{2})/$1$21$4$5/' file とすると
$21と解釈されるようで結果がA 90となってしまいます。
359:デフォルトの名無しさん
16/07/23 19:32:51.24 sc8oJJPG.net
シェルスクリプトと同じで、{} で変数名を明治する。
/${1}${2}1${4}${5}/
360:デフォルトの名無しさん
16/07/23 19:41:00.25 IQFGkMCr.net
>>354
出来ました!!
{}で囲むのは思いつかなかったです。
361:デフォルトの名無しさん
16/07/23 20:22:22.12 rC+TU0A1.net
>>352
他プロセスとは同じプログラムを複数で同時実行したやつです
それとファイルロックだとディレクトリにあるファイル1つ1つにロックしなきゃならないので
ディレクトリにあるファイル全てにアクセス禁止するために
アクセス禁止用ファイルを作りました
362:デフォルトの名無しさん
16/07/23 20:22:25.35 erGYoQ8z.net
スクリプトを動かすときは、「動きますように」と昭和する。