Perl初心者スレ(マジレス回答) (523レス)
上下前次1-新
334(2): 2014/11/13(木)23:58 ID:bKuFahzS(1) AAS
以下のような日付が下から上に並んでいるoriginal.txtがあるとします。
これを、日付を逆順にしたoutput.txtに整形するプログラムを作りたいです。
Windowsで、Batch fileとPerlで作れたらと考えています。よろしくお願いします。
<original.txt>
########## 20141203 ###########
DNINITIENK
FDKHJKDKKSK
・・・・・
########## 20141202 ###########
TUNINJKDF
NIGHALKDK
・・・・・・
########## 20141201 ###########
ABCDEFGHIJKE
LMNOPQRSTUV
・・・・・
<output.txt>
########## 20141201 ###########
ABCDEFGHIJKE
LMNOPQRSTUV
・・・・・・
########## 20141202 ###########
TUNINJKDF
NIGHALKDK
・・・・・・
########## 20141203 ###########
DNINITIENK
FDKHJKDKKSK
・・・・・・
335: 2014/11/14(金)00:03 ID:cRe1Bhcz(1) AAS
>>332
\bだと英字と数字の境目は単語の区切りにならないみたい。
336(1): 2014/11/14(金)01:18 ID:VOKh6jxm(1) AAS
centosで元から入ってるperlとは別にソースインストールしたperlを別に入れました。
新しくインストールしたperlで以前から入っていたCPANモジュールを使いたい場合、再度入れなおす必要ありますか?
337(1): 2014/11/14(金)02:49 ID:FARMtlO3(1/2) AAS
>>334
perl -Mvars=%h -ane '$a = $F[1] if @F == 3 ; $h{$a} .= $_ }{ print $h{$_} for sort { $a <=> $b } keys %h’ original.txt
>>336
モジュールの共用は避けるべき
338(1): 2014/11/14(金)06:59 ID:Ul+u6aQZ(1) AAS
>>334
use 5.016;
use warnings;
my $boundary = qr/^#+\s+\d+\s+#+\s*$/;
open(my $in, "<", "original.txt") or die;
my @data;
my $chunk = '';
while(<$in>){
if (/$boundary/ and (length($chunk) > 0)){
push @data, $chunk;
$chunk = '';
}
$chunk .= $_;
}
if (length($chunk) > 0){
push @data, $chunk;
}
$in->close;
open(my $out, ">", "output.txt") or die;
$out->print(reverse @data);
$out->close;
339(1): 2014/11/14(金)20:30 ID:FARMtlO3(2/2) AAS
単純に逆にするだけか
perl -00pe '$_ = join q{}, reverse ( split /(?=^#)/m)'
340: 2014/11/16(日)13:54 ID:f46/IGen(1) AAS
>338,337,339
有難うございました。
341: 2015/01/12(月)10:56 ID:av7JsOQD(1) AAS
my $initial_title_ = "\$" . "$initial_threads" . "_begin";
$initial_title_ = eval $initial_title_;
1行に短くなりませんか?
342(1): 2015/01/13(火)00:30 ID:Dvj6a5BR(1) AAS
my $initial_title_ = eval "\$${initial_threads}_begin";
こういうこと?
343: 2015/01/13(火)02:35 ID:sfvPNi0Q(1) AAS
>>342
ありがとう
eval使うのが3つあったから
6行が3行になったよ
344(1): 2015/01/14(水)23:01 ID:+qvvUh8r(1) AA×
>>1

2chスレ:tech
345: 2015/01/15(木)09:31 ID:+X0UBnJQ(1/2) AAS
>>344
use open ":utf8";
346(1): 2015/01/15(木)09:40 ID:+X0UBnJQ(2/2) AAS
あ、 binmode STDIN , ":utf8": で
347: 2015/01/15(木)13:13 ID:WfzbS03y(1) AAS
binmode STDIN , ":utf8";
binmode STDOUT , ":utf8";
my $seach_word = "日本語" ;
で同様のコマンド叩いて、つまり344が拾えるはずが
何故かヒットしません
348: 2015/01/15(木)18:33 ID:DbiGPAED(1) AAS
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
349(1): 2015/01/16(金)16:08 ID:6B2q2EkL(1) AAS
w3m -dump -cols 160 2chスレ:tech|nkf -g
UTF-8
UTF-8しか扱わないのにちょっとエンコード回りは複雑だ
350(2): 2015/01/19(月)10:22 ID:AihfgHov(1) AAS
webサイトの表形式データ(横方向は5列、縦方向は不定で100行ぐらい)を取得するのに、
正規表現の繰り返しマッチング
m//g を使って、結果を配列に入れてるんだけど、
もっと簡単に取ってくるモジュールはないでしょうか?
351(1): 2015/01/19(月)21:45 ID:qpn2CGqA(1) AAS
>>350
>webサイトの表形式データ
の形式が分からんとなんとも。
352: 349 2015/01/19(月)22:36 ID:bxHKMq/8(1) AA×
>>346

353(1): 2015/01/20(火)02:00 ID:FcML0ncg(1/2) AAS
>>350 >>351
例えば、こんな表です
外部リンク[htm]:ke.kabupro.jp
今はHTMLのソースを見て、証券コードを正規表現で抽出するために、
=~ m!<tr><th><a\shref[^>]+>(\d{4})<\/a>!ig
などとして配列へ入れているのですが、泥臭いです。
もっとスマートに取得できるモジュールは無いかと思った次第です。
354: 2015/01/20(火)02:06 ID:FcML0ncg(2/2) AAS
(続き)
例えば統計計算用のRでは readHTMLTableというモジュール(パッケージ?)があり、表形式のデータを含んだurlを指定すれば、簡単に取得出来るのですが。
355(1): 2015/01/20(火)07:56 ID:y2BAlbXr(1) AAS
>>353
HTML::TableExtract
外部リンク[pm]:search.cpan.org
Web::Scraper
外部リンク[pm]:search.cpan.org
356: 2015/01/20(火)12:03 ID:NiHMzyM4(1) AAS
>>355
ありがとうございます
357: 2015/03/13(金)20:55 ID:hJWhu2F/(1) AAS
なにこの良スレ
358: 2015/03/28(土)10:06 ID:spJK+jxH(1) AAS
my $tmp = {
$a => sub { $_ = 処理A},
$b => sub { $_ = 処理B},
$c => sub { $_ = 処理C},
};
ループ中に↑のように書いている場合、一つの変数に対して複数の処理($a に 処理A' を追加)を
加えたい場合、どのように書くのでしょうか?
359: 2015/03/30(月)16:12 ID:4W43OXe7(1) AAS
;
360: 2015/04/12(日)18:06 ID:eedq/AcT(1/3) AAS
凄い初歩的な質問だと思うのですが真剣に行き詰まってます
教えてください
_HOGE_
こんな表記の変数ってなんて表現するんですか?
またネットでこういう変数について調べたいときは、
どのように検索したらヒットしますでしょうか。
Perl __
で検索しても全然それらしい記事が発見できず
361(1): 2015/04/12(日)18:43 ID:Xaz/Qvpp(1) AAS
_HOGE_は変数じゃないからヒットしないのが正解
もしかして:ヒアドキュメント
362: 2015/04/12(日)20:02 ID:eedq/AcT(2/3) AAS
なるほど・・・独自のプログラム記述なんでしょうかね・・・
Perlの変数記述方法じゃないことがわかって少し安心しました
もう一回解析してきます
363: 2015/04/12(日)20:06 ID:eedq/AcT(3/3) AAS
>>361さんの回答で先入観が排除され、
意味がわかりました。
$mes =~ s/_HOGE_/$name/g;
文字列に埋め込まれた_HOGE_を別の変数に代入されてる文字列と置換させていました。
ありがとうございました。
上下前次1-新書関写板覧索設栞歴
あと 160 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.031s