探検
Perl初心者スレ(マジレス回答)
332デフォルトの名無しさん
2014/11/13(木) 05:25:18.91ID:iJHzIgO3 \b使えよ。便利だぞ。
333デフォルトの名無しさん
2014/11/13(木) 05:51:07.66ID:DTTQy1M/ そりゃ\b使って期待通りの結果が出るなら使うだろ
334デフォルトの名無しさん
2014/11/13(木) 23:58:39.09ID:bKuFahzS 以下のような日付が下から上に並んでいる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
・・・・・・
これを、日付を逆順にした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:31.59ID:cRe1Bhcz >>332
\bだと英字と数字の境目は単語の区切りにならないみたい。
\bだと英字と数字の境目は単語の区切りにならないみたい。
336デフォルトの名無しさん
2014/11/14(金) 01:18:41.88ID:VOKh6jxm centosで元から入ってるperlとは別にソースインストールしたperlを別に入れました。
新しくインストールしたperlで以前から入っていたCPANモジュールを使いたい場合、再度入れなおす必要ありますか?
新しくインストールしたperlで以前から入っていたCPANモジュールを使いたい場合、再度入れなおす必要ありますか?
337デフォルトの名無しさん
2014/11/14(金) 02:49:12.43ID:FARMtlO3338デフォルトの名無しさん
2014/11/14(金) 06:59:52.41ID:Ul+u6aQZ >>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;
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デフォルトの名無しさん
2014/11/14(金) 20:30:37.37ID:FARMtlO3 単純に逆にするだけか
perl -00pe '$_ = join q{}, reverse ( split /(?=^#)/m)'
perl -00pe '$_ = join q{}, reverse ( split /(?=^#)/m)'
340デフォルトの名無しさん
2014/11/16(日) 13:54:55.61ID:f46/IGen >338,337,339
有難うございました。
有難うございました。
341デフォルトの名無しさん
2015/01/12(月) 10:56:30.31ID:av7JsOQD my $initial_title_ = "\$" . "$initial_threads" . "_begin";
$initial_title_ = eval $initial_title_;
1行に短くなりませんか?
$initial_title_ = eval $initial_title_;
1行に短くなりませんか?
342デフォルトの名無しさん
2015/01/13(火) 00:30:37.15ID:Dvj6a5BR my $initial_title_ = eval "\$${initial_threads}_begin";
こういうこと?
こういうこと?
343デフォルトの名無しさん
2015/01/13(火) 02:35:14.88ID:sfvPNi0Q344デフォルトの名無しさん
2015/01/14(水) 23:01:56.10ID:+qvvUh8r $seach_wordに日本語を入れたいのですが、それだとマッチしません。どうすればよいでしょうか?
w3m -dump -cols 160 http://peace.2ch.net/test/read.cgi/tech/1349538519/| ~/Perl_instance/resSearch.pl
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
my $seach_word = ">1" ;
my $found_res = 0;
my $res = "";
while (<>) {
if (/^\d/x) {
# out put, flash
if ( $found_res == 1 ) {
print $res;
$found_res = 0;
}
$res = "";
}
else {
# searching
if (/$seach_word\b/x) {
$found_res = 1;
}
}
# buffer lines
$res .= $_;
}
w3m -dump -cols 160 http://peace.2ch.net/test/read.cgi/tech/1349538519/| ~/Perl_instance/resSearch.pl
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
my $seach_word = ">1" ;
my $found_res = 0;
my $res = "";
while (<>) {
if (/^\d/x) {
# out put, flash
if ( $found_res == 1 ) {
print $res;
$found_res = 0;
}
$res = "";
}
else {
# searching
if (/$seach_word\b/x) {
$found_res = 1;
}
}
# buffer lines
$res .= $_;
}
345デフォルトの名無しさん
2015/01/15(木) 09:31:41.42ID:+X0UBnJQ >>344
use open ":utf8";
use open ":utf8";
346デフォルトの名無しさん
2015/01/15(木) 09:40:11.27ID:+X0UBnJQ あ、 binmode STDIN , ":utf8": で
347デフォルトの名無しさん
2015/01/15(木) 13:13:41.60ID:WfzbS03y binmode STDIN , ":utf8";
binmode STDOUT , ":utf8";
my $seach_word = "日本語" ;
で同様のコマンド叩いて、つまり344が拾えるはずが
何故かヒットしません
binmode STDOUT , ":utf8";
my $seach_word = "日本語" ;
で同様のコマンド叩いて、つまり344が拾えるはずが
何故かヒットしません
348デフォルトの名無しさん
2015/01/15(木) 18:33:41.92ID:DbiGPAED <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
349デフォルトの名無しさん
2015/01/16(金) 16:08:36.80ID:6B2q2EkL w3m -dump -cols 160 http://peace.2ch.net/test/read.cgi/tech/1349538519/|nkf -g
UTF-8
UTF-8しか扱わないのにちょっとエンコード回りは複雑だ
UTF-8
UTF-8しか扱わないのにちょっとエンコード回りは複雑だ
350デフォルトの名無しさん
2015/01/19(月) 10:22:25.36ID:AihfgHov webサイトの表形式データ(横方向は5列、縦方向は不定で100行ぐらい)を取得するのに、
正規表現の繰り返しマッチング
m//g を使って、結果を配列に入れてるんだけど、
もっと簡単に取ってくるモジュールはないでしょうか?
正規表現の繰り返しマッチング
m//g を使って、結果を配列に入れてるんだけど、
もっと簡単に取ってくるモジュールはないでしょうか?
351デフォルトの名無しさん
2015/01/19(月) 21:45:13.42ID:qpn2CGqA352349
2015/01/19(月) 22:36:30.03ID:bxHKMq/8 >>346
ヒント助かった。
use Encode qw/encode decode/;
my $enc = 'UTF-8';
sub d($) { decode($enc, shift) }
sub e($) { encode($enc, shift) }
my $seach_word = "日本語";
my $found_res = 0;
my $res = "";
while (<>) {
if (/^\d/x) {
if ( $found_res == 1 ) {
print $res;
$found_res = 0;
}
$res = "";
}
else {
my $seach_word_ = e$seach_word;
if (/$seach_word_/x) {
$found_res = 1;
}
}
$res .= $_;
}
ヒント助かった。
use Encode qw/encode decode/;
my $enc = 'UTF-8';
sub d($) { decode($enc, shift) }
sub e($) { encode($enc, shift) }
my $seach_word = "日本語";
my $found_res = 0;
my $res = "";
while (<>) {
if (/^\d/x) {
if ( $found_res == 1 ) {
print $res;
$found_res = 0;
}
$res = "";
}
else {
my $seach_word_ = e$seach_word;
if (/$seach_word_/x) {
$found_res = 1;
}
}
$res .= $_;
}
353デフォルトの名無しさん
2015/01/20(火) 02:00:35.92ID:FcML0ncg >>350 >>351
例えば、こんな表です
http://ke.kabupro.jp/hist/20150107.htm
今はHTMLのソースを見て、証券コードを正規表現で抽出するために、
=~ m!<tr><th><a\shref[^>]+>(\d{4})<\/a>!ig
などとして配列へ入れているのですが、泥臭いです。
もっとスマートに取得できるモジュールは無いかと思った次第です。
例えば、こんな表です
http://ke.kabupro.jp/hist/20150107.htm
今はHTMLのソースを見て、証券コードを正規表現で抽出するために、
=~ m!<tr><th><a\shref[^>]+>(\d{4})<\/a>!ig
などとして配列へ入れているのですが、泥臭いです。
もっとスマートに取得できるモジュールは無いかと思った次第です。
354デフォルトの名無しさん
2015/01/20(火) 02:06:50.85ID:FcML0ncg (続き)
例えば統計計算用のRでは readHTMLTableというモジュール(パッケージ?)があり、表形式のデータを含んだurlを指定すれば、簡単に取得出来るのですが。
例えば統計計算用のRでは readHTMLTableというモジュール(パッケージ?)があり、表形式のデータを含んだurlを指定すれば、簡単に取得出来るのですが。
355デフォルトの名無しさん
2015/01/20(火) 07:56:47.13ID:y2BAlbXr >>353
HTML::TableExtract
http://search.cpan.org/~msisk/HTML-TableExtract-2.12/lib/HTML/TableExtract.pm
Web::Scraper
http://search.cpan.org/~miyagawa/Web-Scraper-0.38/lib/Web/Scraper.pm
HTML::TableExtract
http://search.cpan.org/~msisk/HTML-TableExtract-2.12/lib/HTML/TableExtract.pm
Web::Scraper
http://search.cpan.org/~miyagawa/Web-Scraper-0.38/lib/Web/Scraper.pm
356デフォルトの名無しさん
2015/01/20(火) 12:03:15.85ID:NiHMzyM4 >>355
ありがとうございます
ありがとうございます
357デフォルトの名無しさん
2015/03/13(金) 20:55:35.08ID:hJWhu2F/ なにこの良スレ
358デフォルトの名無しさん
2015/03/28(土) 10:06:58.72ID:spJK+jxH my $tmp = {
$a => sub { $_ = 処理A},
$b => sub { $_ = 処理B},
$c => sub { $_ = 処理C},
};
ループ中に↑のように書いている場合、一つの変数に対して複数の処理($a に 処理A' を追加)を
加えたい場合、どのように書くのでしょうか?
$a => sub { $_ = 処理A},
$b => sub { $_ = 処理B},
$c => sub { $_ = 処理C},
};
ループ中に↑のように書いている場合、一つの変数に対して複数の処理($a に 処理A' を追加)を
加えたい場合、どのように書くのでしょうか?
359デフォルトの名無しさん
2015/03/30(月) 16:12:56.05ID:4W43OXe7 ;
360デフォルトの名無しさん
2015/04/12(日) 18:06:38.92ID:eedq/AcT 凄い初歩的な質問だと思うのですが真剣に行き詰まってます
教えてください
_HOGE_
こんな表記の変数ってなんて表現するんですか?
またネットでこういう変数について調べたいときは、
どのように検索したらヒットしますでしょうか。
Perl __
で検索しても全然それらしい記事が発見できず
教えてください
_HOGE_
こんな表記の変数ってなんて表現するんですか?
またネットでこういう変数について調べたいときは、
どのように検索したらヒットしますでしょうか。
Perl __
で検索しても全然それらしい記事が発見できず
361デフォルトの名無しさん
2015/04/12(日) 18:43:51.80ID:Xaz/Qvpp _HOGE_は変数じゃないからヒットしないのが正解
もしかして:ヒアドキュメント
もしかして:ヒアドキュメント
362デフォルトの名無しさん
2015/04/12(日) 20:02:52.86ID:eedq/AcT なるほど・・・独自のプログラム記述なんでしょうかね・・・
Perlの変数記述方法じゃないことがわかって少し安心しました
もう一回解析してきます
Perlの変数記述方法じゃないことがわかって少し安心しました
もう一回解析してきます
363デフォルトの名無しさん
2015/04/12(日) 20:06:31.76ID:eedq/AcT >>361さんの回答で先入観が排除され、
意味がわかりました。
$mes =~ s/_HOGE_/$name/g;
文字列に埋め込まれた_HOGE_を別の変数に代入されてる文字列と置換させていました。
ありがとうございました。
意味がわかりました。
$mes =~ s/_HOGE_/$name/g;
文字列に埋め込まれた_HOGE_を別の変数に代入されてる文字列と置換させていました。
ありがとうございました。
364デフォルトの名無しさん
2015/04/13(月) 07:38:14.33ID:bJ3+bESR __END__
とかそんなのの仲間じゃなくて?
とかそんなのの仲間じゃなくて?
365デフォルトの名無しさん
2015/05/14(木) 07:11:03.21ID:y4MWBEfC なんでも受け付けるからって、
__HOGE__ をヒアドキュメントとして使ってる人は、単に
特殊リテラルを理解してない人。
質問に超絶遅レスするなら、
__HOGE__は、ほんとうに HOGE と書かれていたなら、
特殊リテラルのまねっこ。
DATA, END などなら、perldoc.jp で perldata から「特殊なリテラル」の項を
参照すること。
__HOGE__ をヒアドキュメントとして使ってる人は、単に
特殊リテラルを理解してない人。
質問に超絶遅レスするなら、
__HOGE__は、ほんとうに HOGE と書かれていたなら、
特殊リテラルのまねっこ。
DATA, END などなら、perldoc.jp で perldata から「特殊なリテラル」の項を
参照すること。
366デフォルトの名無しさん
2015/05/15(金) 01:58:16.40ID:3U2TIRvt >>365
どういうこと?
どういうこと?
367デフォルトの名無しさん
2015/05/15(金) 02:39:32.50ID:PxFVj8Xw ヒアドキュメントのデリミタを
print <<die;
dieなんてしないよ
die
ってしたら混乱するでしょ。それと同じレベルで特殊リテラルの
記載に類似(もしくはそのまま)させて使ったら、あかんでしょ。
print <<__END__;
dieなんてしないよ
__END__
って主旨?
print <<die;
dieなんてしないよ
die
ってしたら混乱するでしょ。それと同じレベルで特殊リテラルの
記載に類似(もしくはそのまま)させて使ったら、あかんでしょ。
print <<__END__;
dieなんてしないよ
__END__
って主旨?
368デフォルトの名無しさん
2015/05/17(日) 23:46:03.51ID:wdkXHT83 絶対にありえない単語を区切りにしないと、区切りとしての役目にならんだろが
__END__を区切りにしてしまったら、__END__という単語が使えなくなるだろ
__END__を区切りにしてしまったら、__END__という単語が使えなくなるだろ
369デフォルトの名無しさん
2015/05/18(月) 00:16:17.74ID:4BIqDTjB じゃあ __HOGE__ にするわ。絶対ありえん単語だし。
370デフォルトの名無しさん
2015/05/18(月) 00:56:57.87ID:sNwS2iXa >>368
実行してみろよ、動くぞ。
use strict ;
use warnings ;
while(<DATA>){
print ;
}
print <<__DATA__;
これがヒア
__DATA__
__DATA__
特殊リテラル
実行してみろよ、動くぞ。
use strict ;
use warnings ;
while(<DATA>){
print ;
}
print <<__DATA__;
これがヒア
__DATA__
__DATA__
特殊リテラル
371デフォルトの名無しさん
2015/05/28(木) 16:11:25.87ID:lXL23oHs ID.パス付きのHPの更新通知プログラムをつくり実行したところ (certificate verify failed)とハマりました。
おそらくSSL関係でつまっています。
簡単に教えてくれる方お願いします。
$mech->get('https://*****');
↑指摘されたラインです
SSLかと思うのですが、SSLについて知識があまりないため、
ダメだった理由をわかりやすく教えていただけませんか?
あと、ユーザーIDやパスワードの前にpitgetを書いてあると
どうなるのでしょうか?
説明下手でごめんなさい。
おそらくSSL関係でつまっています。
簡単に教えてくれる方お願いします。
$mech->get('https://*****');
↑指摘されたラインです
SSLかと思うのですが、SSLについて知識があまりないため、
ダメだった理由をわかりやすく教えていただけませんか?
あと、ユーザーIDやパスワードの前にpitgetを書いてあると
どうなるのでしょうか?
説明下手でごめんなさい。
372デフォルトの名無しさん
2015/06/08(月) 21:35:22.93ID:fDJEyEgd 特定のディレクトリ(test)からファイルを読み込む処理を
実装しようと思っています。
while(<./test/*>){
#〜ファイル読み込み処理
}
はOKなのに
$hoge = "./test/*";
while(<$hoge>){
#〜ファイル読み込み処理
}
がうまくいかない理由はなぜなのでしょうか?
$hogeを可変にしたいのですがどうすればよいでしょうか?
突然の質問で申し訳ありませんが、宜しくお願いします。
実装しようと思っています。
while(<./test/*>){
#〜ファイル読み込み処理
}
はOKなのに
$hoge = "./test/*";
while(<$hoge>){
#〜ファイル読み込み処理
}
がうまくいかない理由はなぜなのでしょうか?
$hogeを可変にしたいのですがどうすればよいでしょうか?
突然の質問で申し訳ありませんが、宜しくお願いします。
373デフォルトの名無しさん
2015/06/08(月) 22:51:09.28ID:tIKF3SUY $hoge = "./test/*";
これは文字だからです。(演算子に対するアドレス(ポインタ)ではありません)。
$hoge = "test";
while(<./$hoge/*>)
これは文字だからです。(演算子に対するアドレス(ポインタ)ではありません)。
$hoge = "test";
while(<./$hoge/*>)
374デフォルトの名無しさん
2015/06/08(月) 23:05:32.65ID:fDJEyEgd375デフォルトの名無しさん
2015/08/31(月) 00:47:28.38ID:xgd4PpfH 下のようにリストのリストを作成したいがcpanか何かで実現できないでしょうか?
> (list (list 1 2) (list 3 4))
((1 2) (3 4))
> (first (list (list 1 2) (list 3 4)))
(1 2)
> (second (list (list 1 2) (list 3 4)))
(3 4)
my @car = (1, 2);
my @cdr = (3, 4);
my @both = (@car, @cdr);
print "\@car is @car\n"; # -> @car is 1 2
print "\@cdr is @cdr\n"; # -> @cdr is 3 4
print "\@both is @both\n";# -> @both is 1 2 3 4
printf "%s\n" , $both[0]; # -> 1
printf "%s\n" , $both[1]; # -> 2
printf "%s\n" , $both[2]; # -> 3
printf "%s\n" , $both[3]; # -> 4
> (list (list 1 2) (list 3 4))
((1 2) (3 4))
> (first (list (list 1 2) (list 3 4)))
(1 2)
> (second (list (list 1 2) (list 3 4)))
(3 4)
my @car = (1, 2);
my @cdr = (3, 4);
my @both = (@car, @cdr);
print "\@car is @car\n"; # -> @car is 1 2
print "\@cdr is @cdr\n"; # -> @cdr is 3 4
print "\@both is @both\n";# -> @both is 1 2 3 4
printf "%s\n" , $both[0]; # -> 1
printf "%s\n" , $both[1]; # -> 2
printf "%s\n" , $both[2]; # -> 3
printf "%s\n" , $both[3]; # -> 4
376デフォルトの名無しさん
2015/08/31(月) 13:20:01.08ID:Q0xjlAqa Lisper な人?
多分、こういうことをお望みかな。
#!/usr/bin/perl
use Data::Dumper;
my @car = (1, 2);
my @cdr = (3, 4);
my @both = ( \@car, \@cdr);
print( Dumper( \@both));
多分、こういうことをお望みかな。
#!/usr/bin/perl
use Data::Dumper;
my @car = (1, 2);
my @cdr = (3, 4);
my @both = ( \@car, \@cdr);
print( Dumper( \@both));
377デフォルトの名無しさん
2015/08/31(月) 13:31:30.24ID:Q0xjlAqa ごめん、アクセス方法も書かなきゃね。
#!/usr/bin/perl
my @car = (1, 2);
my @cdr = (3, 4);
my @both = ( \@car, \@cdr);
print("$both[0]->[0]\n");
print("$both[0]->[1]\n");
print("$both[1]->[0]\n");
print("$both[1]->[1]\n");
#!/usr/bin/perl
my @car = (1, 2);
my @cdr = (3, 4);
my @both = ( \@car, \@cdr);
print("$both[0]->[0]\n");
print("$both[0]->[1]\n");
print("$both[1]->[0]\n");
print("$both[1]->[1]\n");
378デフォルトの名無しさん
2015/08/31(月) 18:13:02.76ID:zR+vvNwg >>377
ありがとう perlのリファレンス表記がこの機会に少し分かりました
my @car = (1, 2);
my @cdr = (3, 4);
my @both = ( \@car, \@cdr);
print("$both[0]->[0]\n");
print("$both[0]->[1]\n");
print("$both[1]->[0]\n");
print("$both[1]->[1]\n");
print("@{$both[0]}\n");
print("@{$both[1]}\n");
ありがとう perlのリファレンス表記がこの機会に少し分かりました
my @car = (1, 2);
my @cdr = (3, 4);
my @both = ( \@car, \@cdr);
print("$both[0]->[0]\n");
print("$both[0]->[1]\n");
print("$both[1]->[0]\n");
print("$both[1]->[1]\n");
print("@{$both[0]}\n");
print("@{$both[1]}\n");
379デフォルトの名無しさん
2016/01/10(日) 13:19:49.57ID:/ndDSiBm 971 名前:名無しさん@七周年[] 投稿日:2006/11/11(土) 00:56:10 ID:M8+ahUZV0
自称スーパープログラマー某
強烈加齢臭
メール見ない メール無視
ドキュメント見ない ドキュメント無視
説明聞かない 説明無視
話聞かない 話無視
ガム→むっちゃー むっちゃー むっちゃー むっちゃー
煎餅→バリバリバリバリバリバリ
菓子パン→モグモグモグモグモグモグモグモグモグモグ
カップアイス→むっちゃー むっちゃー ペロペロペロペロ
フロアすべてに響き渡る 超ばかでかいくしゃみ 当然手でおさえない
異音と異振動
ドスーン!ドスーン! ドカーン!ドカーン! バコーン!バコーン! ズドン!ズドン!
机が近いとマウスポインターが飛ぶ 誤操作誘発
書類だしたりしまうだけでドカンドカン
30秒ごとに口と鼻から異音
ふんっっ! ふんっっ!
備品破壊 貸与P C 破壊 他人のもの破壊
奴の作ったスクリプトとプログラムは使えない バグ製造機
電話や共有携帯電話 キーボードが油ベタベタ
奴に電話とPCとコンソールは触らせてはいけない
自称スーパープログラマー某
強烈加齢臭
メール見ない メール無視
ドキュメント見ない ドキュメント無視
説明聞かない 説明無視
話聞かない 話無視
ガム→むっちゃー むっちゃー むっちゃー むっちゃー
煎餅→バリバリバリバリバリバリ
菓子パン→モグモグモグモグモグモグモグモグモグモグ
カップアイス→むっちゃー むっちゃー ペロペロペロペロ
フロアすべてに響き渡る 超ばかでかいくしゃみ 当然手でおさえない
異音と異振動
ドスーン!ドスーン! ドカーン!ドカーン! バコーン!バコーン! ズドン!ズドン!
机が近いとマウスポインターが飛ぶ 誤操作誘発
書類だしたりしまうだけでドカンドカン
30秒ごとに口と鼻から異音
ふんっっ! ふんっっ!
備品破壊 貸与P C 破壊 他人のもの破壊
奴の作ったスクリプトとプログラムは使えない バグ製造機
電話や共有携帯電話 キーボードが油ベタベタ
奴に電話とPCとコンソールは触らせてはいけない
380デフォルトの名無しさん
2016/11/02(水) 10:11:38.85ID:+6JfDybA HTMLファイルの特定文字列を大文字から小文字へ置き換えたいです。
具体的には、name=
具体的には、name=
381380
2016/11/02(水) 10:15:17.18ID:+6JfDybA あれ、途切れちゃったのでダブルクォートでおかしくなったので、無しで書きます。
HTMLファイルの特定文字列を大文字から小文字へ置き換えたいです。
具体的には、name=A10AB を name=a10ab とnameの部分のみ置き換えたいです。
HTMLファイルの特定文字列を大文字から小文字へ置き換えたいです。
具体的には、name=A10AB を name=a10ab とnameの部分のみ置き換えたいです。
382デフォルトの名無しさん
2016/11/03(木) 19:06:36.96ID:OIFmvywo s{ name=" ([^"]+) " }{ 'name="' . lc($1) . '"' }egx
384デフォルトの名無しさん
2016/11/20(日) 01:09:58.42ID:VOEYuZOA perl コマンドラインからモジュールを読み込みたいんですが、
perl -mM Win32::Clipboard -e ""
だと
Can't open perl script "Win32::Clipboard": Invalid argument
と怒られます。
Perl64\lib\Win32\Clipboard.pm
は存在しているのですが・・・
perl -mM Win32::Clipboard -e ""
だと
Can't open perl script "Win32::Clipboard": Invalid argument
と怒られます。
Perl64\lib\Win32\Clipboard.pm
は存在しているのですが・・・
385デフォルトの名無しさん
2016/11/20(日) 11:39:42.73ID:fMzPWX9X なんで -m と -M 重ねてるの?それと隙間開けずにやってみ
-MWin32::Clipboard
↑
-MWin32::Clipboard
↑
386デフォルトの名無しさん
2016/11/20(日) 11:42:40.54ID:fMzPWX9X perl -mM Win32::Clipboard
だと M.pm を読み込んだ後 Win32::Clipboard という名のファイルをperlスクリプトとして実行しようとしてるっぽい
だと M.pm を読み込んだ後 Win32::Clipboard という名のファイルをperlスクリプトとして実行しようとしてるっぽい
387デフォルトの名無しさん
2016/11/20(日) 19:04:30.90ID:VOEYuZOA388デフォルトの名無しさん
2016/11/20(日) 21:00:33.25ID:pMz2tkuX どうでもいいけど、質問の回答に「なんで○○なの」と質問で返すのはみっともない
わからないから質問してるのにね
ここは初心者スレだし
よっぽど回答に自信が無いように見える
わからないから質問してるのにね
ここは初心者スレだし
よっぽど回答に自信が無いように見える
389デフォルトの名無しさん
2016/11/20(日) 21:01:48.41ID:pMz2tkuX なんで?
なんで?
なんで?
ことあるごとに、「なんで」っていうヤツ
バカっぽい
イライラする
ムカツク
なんで?
なんで?
ことあるごとに、「なんで」っていうヤツ
バカっぽい
イライラする
ムカツク
390デフォルトの名無しさん
2016/11/23(水) 04:06:43.88ID:eJb9MXJH >>389
「なんで」を追求する楽しさがわからないの?
「なんで」を追求する楽しさがわからないの?
391デフォルトの名無しさん
2016/11/23(水) 10:50:03.05ID:I/SlW2fg 質問を質問でかえすやついるよな
俺「なぜ変更したんですか?」
先輩「なぜ、その変更に疑問を抱くの?」
・・・
俺「なぜ変更したんですか?」
先輩「なぜ、その変更に疑問を抱くの?」
・・・
392デフォルトの名無しさん
2016/11/23(水) 11:10:48.33ID:NGAFtogl 文脈にもよるわな
マニュアルにはっきり書いてあるようなことと違うことやっているなら「お前ちゃんと読んでないのか?」ってなるし
どう説明したら理解できるのか探るためにどう考えてどこに疑問を持ったのか確認することもあるし
そういう文脈を無視して 質問したら質問が返ってきた = おかしい は短絡的だね
マニュアルにはっきり書いてあるようなことと違うことやっているなら「お前ちゃんと読んでないのか?」ってなるし
どう説明したら理解できるのか探るためにどう考えてどこに疑問を持ったのか確認することもあるし
そういう文脈を無視して 質問したら質問が返ってきた = おかしい は短絡的だね
393デフォルトの名無しさん
2016/11/23(水) 11:32:41.80ID:I/SlW2fg394デフォルトの名無しさん
2016/11/24(木) 21:29:28.37ID:Puznaqkq perlの本を読んでいると、よく
「スカラーコンテキストでは〜」とか「リストコンテキストでは〜」とありますが
どのようなところで、分かるのでしょうか?
$a = grep /d/ ,qw<ab cd def>;
なんかgrepがスカラーコンテキストで使われていると思うんですが
if(grep /d/ ,qw<ab cd def>){}
だとなぜスカラーコンテキストだと分かるのでしょうか?
「スカラーコンテキストでは〜」とか「リストコンテキストでは〜」とありますが
どのようなところで、分かるのでしょうか?
$a = grep /d/ ,qw<ab cd def>;
なんかgrepがスカラーコンテキストで使われていると思うんですが
if(grep /d/ ,qw<ab cd def>){}
だとなぜスカラーコンテキストだと分かるのでしょうか?
395デフォルトの名無しさん
2016/11/24(木) 21:43:25.96ID:ws/Ij8QD 真偽値だからスカラーコンテキスト
396デフォルトの名無しさん
2016/11/24(木) 22:50:56.11ID:Puznaqkq ありがとうございます
理解できました。
理解できました。
397デフォルトの名無しさん
2016/11/28(月) 20:34:11.39ID:5mxcw3wW shiftjisのファイルを読み込むと「{」が「本」にマッチしちゃうんですがいい方法ありませんか?
398デフォルトの名無しさん
2016/11/29(火) 00:14:31.38ID:y3Pzho4d 基本全部utf8で処理する
399デフォルトの名無しさん
2016/11/29(火) 00:38:56.85ID:p0rBFEu6 ファイルを読み込むときにperlに文字コードを教えてあげるとバイト単位ではなくて文字単位で認識してもらえるようになる
open my $fh, '<:encoding(cp932)', $file or die $!;
正規表現を含むソースコード全体をUTF8で書き、スコープの上の方で use utf8; と宣言すればスコープ内のコードも文字単位で認識されるようになる
open my $fh, '<:encoding(cp932)', $file or die $!;
正規表現を含むソースコード全体をUTF8で書き、スコープの上の方で use utf8; と宣言すればスコープ内のコードも文字単位で認識されるようになる
400デフォルトの名無しさん
2016/11/29(火) 08:02:41.28ID:lSOeahl6401デフォルトの名無しさん
2017/02/26(日) 22:46:53.99ID:UaR+28E8 以下エラーが出たため、ググると、似たエラーのQ and Aがありました。
Q and A では "if(defined(%hash))"を"if(%hash)"にしろと読めたので、倣うと確かにエラーは解消されました。
理屈はまるで分からないのですが、%記号のついた変数のときだけdefinedを削る理由は何なのでしょうか。
エラー: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?) at ./w3mhelp.cgi line 51.
Q and A: https://github.com/bioconda/bioconda-recipes/issues/1254
Q and A では "if(defined(%hash))"を"if(%hash)"にしろと読めたので、倣うと確かにエラーは解消されました。
理屈はまるで分からないのですが、%記号のついた変数のときだけdefinedを削る理由は何なのでしょうか。
エラー: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?) at ./w3mhelp.cgi line 51.
Q and A: https://github.com/bioconda/bioconda-recipes/issues/1254
402デフォルトの名無しさん
2017/02/26(日) 23:46:32.86ID:03Ms8vp8 >>401
すごく古い Perl (例えば 5.005_03) だと、defined %hash はエラーにならず 0 か 1 が返ってきていた。
だが今やこの機能は廃止された。
http://perldoc.jp/func/defined
> 集合(ハッシュや配列)への defined の使用は非推奨です。
> これはその集合にメモリが割り当てられたかを報告するのに用いられていました。
> この振る舞いは将来のバージョンの Perl では消滅するかもしれません。
ハッシュ変数自体をスカラーコンテキストで評価すると「利用バケット数/確保バケット数」のような値が
返ってきて、これは昔から変わらない。内容が完全に未定義 = キーが一つも無ければ 0 が返される。
よって if (%hash) { ... } は、意味や挙動的には if (keys %hash) { ... } と同じ。
my %hash;
printf "%s, %d\n", scalar %hash, scalar keys %hash; # 0, 0
$hash{udnef} = undef;
printf "%s, %d\n", scalar %hash, scalar keys %hash; # 1/8, 1
%hash = ();
printf "%s, %d\n", scalar %hash, scalar keys %hash; # 0, 0
http://d.hatena.ne.jp/yumatsumo/20071207/1197002522
すごく古い Perl (例えば 5.005_03) だと、defined %hash はエラーにならず 0 か 1 が返ってきていた。
だが今やこの機能は廃止された。
http://perldoc.jp/func/defined
> 集合(ハッシュや配列)への defined の使用は非推奨です。
> これはその集合にメモリが割り当てられたかを報告するのに用いられていました。
> この振る舞いは将来のバージョンの Perl では消滅するかもしれません。
ハッシュ変数自体をスカラーコンテキストで評価すると「利用バケット数/確保バケット数」のような値が
返ってきて、これは昔から変わらない。内容が完全に未定義 = キーが一つも無ければ 0 が返される。
よって if (%hash) { ... } は、意味や挙動的には if (keys %hash) { ... } と同じ。
my %hash;
printf "%s, %d\n", scalar %hash, scalar keys %hash; # 0, 0
$hash{udnef} = undef;
printf "%s, %d\n", scalar %hash, scalar keys %hash; # 1/8, 1
%hash = ();
printf "%s, %d\n", scalar %hash, scalar keys %hash; # 0, 0
http://d.hatena.ne.jp/yumatsumo/20071207/1197002522
403デフォルトの名無しさん
2017/02/27(月) 00:03:03.35ID:JWhb7pSm ttps://perldoc.jp/docs/perl/5.22.0/perl5220delta.pod#defined40-64array41-32and32defined40-37hash41-32are32now32fatal32errors
>defined(@array) と defined(%hash) は致命的エラーになりました
>これは v5.6.1 から廃止予定で、v5.16 から廃止予定警告が出力されていました。
v5.6.1は2001年、v5.16は2012年、実際に廃止されたv5.22は2015年にリリース
ttps://www.effectiveperlprogramming.com/2016/06/perl-v5-26-new-features/
>A hash is scalar context will return the number of keys, not the hash statistics.
今年リリース予定のv5.26からはスカラーコンテキストのハッシュが返す値はハッシュの持つキーの数になるそうです
>defined(@array) と defined(%hash) は致命的エラーになりました
>これは v5.6.1 から廃止予定で、v5.16 から廃止予定警告が出力されていました。
v5.6.1は2001年、v5.16は2012年、実際に廃止されたv5.22は2015年にリリース
ttps://www.effectiveperlprogramming.com/2016/06/perl-v5-26-new-features/
>A hash is scalar context will return the number of keys, not the hash statistics.
今年リリース予定のv5.26からはスカラーコンテキストのハッシュが返す値はハッシュの持つキーの数になるそうです
404デフォルトの名無しさん
2018/02/03(土) 21:51:51.42ID:UEj2CeXM Perl初心者です。独学でやり始めましたが、わからないことがあり、先輩方、何卒よろしくお願いします。
my $num = 1;
my $inc = $num++;
print “$num¥n”;
print “$inc¥n”;
変数$numは2と表示されますが、変数$incは1と表示さます。こらは仕様でしょうか。変数$incについても2が表示されると思ってたのですが。
C言語では右辺を評価した後に左辺に代入して、2が表示してたかな、と思ったので質問させていただきます。
my $num = 1;
my $inc = $num++;
print “$num¥n”;
print “$inc¥n”;
変数$numは2と表示されますが、変数$incは1と表示さます。こらは仕様でしょうか。変数$incについても2が表示されると思ってたのですが。
C言語では右辺を評価した後に左辺に代入して、2が表示してたかな、と思ったので質問させていただきます。
405デフォルトの名無しさん
2018/02/03(土) 22:48:45.47ID:oNG+vmom >>404
Cでも++演算子は同様の結果になると思ったが?
Cでも++演算子は同様の結果になると思ったが?
406デフォルトの名無しさん
2018/02/03(土) 22:55:48.24ID:UEj2CeXM407デフォルトの名無しさん
2018/02/03(土) 22:57:16.17ID:UEj2CeXM408デフォルトの名無しさん
2018/05/23(水) 20:30:23.86ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
WVNXN
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
WVNXN
409デフォルトの名無しさん
2018/05/24(木) 02:11:41.40ID:zOcuDZ4P perlやってみたいど素人です。
Ubuntu 18.04がメインのマシンです
Windows XPサポート終了後難民となり
Ubuntu 16.04に辿りついてます
Ubuntuもまだまだど素人ですけど
通常に動かす所まではできます
Perlはどこから?始めたらいいでしょう
本買った方がいいのかな?
Ubuntu 18.04がメインのマシンです
Windows XPサポート終了後難民となり
Ubuntu 16.04に辿りついてます
Ubuntuもまだまだど素人ですけど
通常に動かす所まではできます
Perlはどこから?始めたらいいでしょう
本買った方がいいのかな?
410デフォルトの名無しさん
2018/05/24(木) 02:11:43.82ID:zOcuDZ4P perlやってみたいど素人です。
Ubuntu 18.04がメインのマシンです
Windows XPサポート終了後難民となり
Ubuntu 16.04に辿りついてます
Ubuntuもまだまだど素人ですけど
通常に動かす所まではできます
Perlはどこから?始めたらいいでしょう
本買った方がいいのかな?
Ubuntu 18.04がメインのマシンです
Windows XPサポート終了後難民となり
Ubuntu 16.04に辿りついてます
Ubuntuもまだまだど素人ですけど
通常に動かす所まではできます
Perlはどこから?始めたらいいでしょう
本買った方がいいのかな?
411デフォルトの名無しさん
2018/05/24(木) 07:46:52.51ID:8nuNm7XP412デフォルトの名無しさん
2018/05/24(木) 11:20:03.99ID:4N/yOXRV >>411
独学派なんです。
独学派なんです。
413デフォルトの名無しさん
2018/06/20(水) 03:35:44.14ID:CuTzdQY9 perlに初心者がつくとは。。perlの未来は明るい
414デフォルトの名無しさん
2018/06/20(水) 20:53:58.17ID:Va19lMsb Perl 6の“Neko operator”を使ってみたいのですがどのように使用すればいいでしょうか。
> 0 ^..^ 9
> say "0 ^..^ 9"
などとやっても
0 ^..^ 9
という文字列(?)が返ってくるだけなのですが……。
> 0 ^..^ 9
> say "0 ^..^ 9"
などとやっても
0 ^..^ 9
という文字列(?)が返ってくるだけなのですが……。
415デフォルトの名無しさん
2018/06/22(金) 02:01:50.03ID:AmdeLsRG Perl6は初心者なので全く分からない。
というかやろうとしたことすらないので知識ゼロw
というかやろうとしたことすらないので知識ゼロw
416デフォルトの名無しさん
2018/06/22(金) 08:56:04.63ID:Xz8qrSqH perl6いつになったら実用的な実装出るのー?
417デフォルトの名無しさん
2018/06/27(水) 17:36:19.05ID:rSBeNI25 >>414
すいませんどなたかこれ分かりませんか。
すいませんどなたかこれ分かりませんか。
418デフォルトの名無しさん
2018/06/28(木) 00:53:58.60ID:mceaYjQ2 >>417
perl6はまったく使ったことはないが、
範囲演算子らしいから
perl5の ... と同じように使うんじゃないのかね。
say $_ for 0 ^..^ 10;
みたいな? perl6の文法的にこれでいいかはわからんけど。
perl6はまったく使ったことはないが、
範囲演算子らしいから
perl5の ... と同じように使うんじゃないのかね。
say $_ for 0 ^..^ 10;
みたいな? perl6の文法的にこれでいいかはわからんけど。
419デフォルトの名無しさん
2018/06/28(木) 03:08:38.20ID:mceaYjQ2 perl5の範囲演算子 ... じゃなくて .. だったね。失礼。
420デフォルトの名無しさん
2018/06/28(木) 13:40:00.67ID:n10gG+NH >>418
できました。ありがとうございます。
できました。ありがとうございます。
421デフォルトの名無しさん
2018/06/29(金) 22:13:55.33ID:jsqIPRMd Neko演算子なんてあるのねw
422デフォルトの名無しさん
2018/07/04(水) 22:52:04.22ID:gFgZc5FG ANH
423デフォルトの名無しさん
2018/07/06(金) 12:26:50.17ID:uTPDH9XV ANH
424デフォルトの名無しさん
2018/07/12(木) 14:35:34.31ID:EgbO6wCv Perlの勉強始めました。
425デフォルトの名無しさん
2018/07/12(木) 16:09:13.97ID:sm9NZXwJ 冷やし中華始めました。
426デフォルトの名無しさん
2018/07/19(木) 12:24:17.38ID:0leqnnH4 Xorgってperlで描かれてるコマンドが多い気がするけどなんで?
427デフォルトの名無しさん
2018/08/03(金) 22:49:39.26ID:G69i9RgI なんだろう? 計算式で質問投稿しようとするとNGワードエラーで拒否られてしまう orz
全角でもダメかー
全角でもダメかー
428427です
2018/08/04(土) 19:04:46.45ID:pEPpCry/ これで書けるかな?
代入計算式のソースと書きたかった質問内容をマンゴースレに貼りました。
https://agree.5ch.net/test/read.cgi/mango/1532726276/421-422
代入計算式のソースと書きたかった質問内容をマンゴースレに貼りました。
https://agree.5ch.net/test/read.cgi/mango/1532726276/421-422
429427です
2018/08/04(土) 19:09:36.61ID:pEPpCry/ >428 の書き込みで、本来続きだった リンク先 >422 の
16進〜解説お願いできませんでしょうか?
の文章内だけでもNG含んでるとか・・・・プログラム技術板・・コミュニケーション終わってね?
16進〜解説お願いできませんでしょうか?
の文章内だけでもNG含んでるとか・・・・プログラム技術板・・コミュニケーション終わってね?
430デフォルトの名無しさん
2018/08/05(日) 06:11:20.74ID:cdvogGHQ >>428
よくわからないんだけど、下2桁を60で割って3桁目より上は1の位にシフトしているわけだよね。
とするとあり得るのは時間の時と分について 時 * 100 + 分 とやった結果が数値として入っていて、
それの時間単位への変換ではないか?
例えば元の値が 315 なら3時間15分という意味で、それを時間単位に直すと 3.25 時間ってこと。
よくわからないんだけど、下2桁を60で割って3桁目より上は1の位にシフトしているわけだよね。
とするとあり得るのは時間の時と分について 時 * 100 + 分 とやった結果が数値として入っていて、
それの時間単位への変換ではないか?
例えば元の値が 315 なら3時間15分という意味で、それを時間単位に直すと 3.25 時間ってこと。
431デフォルトの名無しさん
2018/08/05(日) 06:13:27.55ID:cdvogGHQ 時と分とは限らないか。分と秒かも知れない。まあしかし下2桁は60進法で考えなければいけないということに変わりはない。
432デフォルトの名無しさん
2018/08/05(日) 07:50:18.49ID:cdvogGHQ >>428
ところで元のプログラムに「16進バイナリデータを・・・」というコメントが入っているのだろうが、呼び出す側は実際には何を渡している?
仮に元がバイナリだったとしても unpack('N', ...) のようなことをしていない? だとするとそこでバイナリから Perl の
変数への変換自体は終わっている。
つまり、コメントが紛らわしい表現になっているだけ。
ところで元のプログラムに「16進バイナリデータを・・・」というコメントが入っているのだろうが、呼び出す側は実際には何を渡している?
仮に元がバイナリだったとしても unpack('N', ...) のようなことをしていない? だとするとそこでバイナリから Perl の
変数への変換自体は終わっている。
つまり、コメントが紛らわしい表現になっているだけ。
2018/08/05(日) 12:21:43.54ID:gWGunr7x
>430-432 スミマセンです。 orz
もっと詳しく書こうとするとマンゴースレでもブロックされました。
ぶっちゃけ、この中の
ttp://motor.geocities.jp/resermail/dc10tools.zip
「dc10mov2csv.pl」内です。
gps_data{'latitude'}の部分からです
gps_data{'bearing'}の式は
変換が単精度浮動小数点数(float)のIEEE754 単精度float変換で合ってますか?
これをベースに別メーカー機種の同様な構造を持つデータでの他言語の変換プログラムを考えているので。
もっと詳しく書こうとするとマンゴースレでもブロックされました。
ぶっちゃけ、この中の
ttp://motor.geocities.jp/resermail/dc10tools.zip
「dc10mov2csv.pl」内です。
gps_data{'latitude'}の部分からです
gps_data{'bearing'}の式は
変換が単精度浮動小数点数(float)のIEEE754 単精度float変換で合ってますか?
これをベースに別メーカー機種の同様な構造を持つデータでの他言語の変換プログラムを考えているので。
434デフォルトの名無しさん
2018/08/05(日) 17:23:40.10ID:cdvogGHQ >>433
pack, unpack の f は機種依存なので IEEE 754 単制度になるかどうかはプログラムからだけではわからない。
http://perldoc.jp/func/pack
まあでも今時の普通のPC用Perlならなってそうな気がするけどね。
latitude って緯度か。GPSデータのバイナリをPerlの変数に入れているということだな。
だから下2桁を60進法で考える必要があると。
やはりそのプログラムのコメントは紛らわしいってだけだよ(サブルーチン名も紛らわしいが)。
bin_convert 呼ぶときには既にバイナリから float に unpack されてるから。
で、bin_convert 内でやっているのは先に書いた通り下2桁を60進法で小数点以下の値にしてるってことね。
pack, unpack の f は機種依存なので IEEE 754 単制度になるかどうかはプログラムからだけではわからない。
http://perldoc.jp/func/pack
まあでも今時の普通のPC用Perlならなってそうな気がするけどね。
latitude って緯度か。GPSデータのバイナリをPerlの変数に入れているということだな。
だから下2桁を60進法で考える必要があると。
やはりそのプログラムのコメントは紛らわしいってだけだよ(サブルーチン名も紛らわしいが)。
bin_convert 呼ぶときには既にバイナリから float に unpack されてるから。
で、bin_convert 内でやっているのは先に書いた通り下2桁を60進法で小数点以下の値にしてるってことね。
435427です
2018/08/05(日) 21:57:54.47ID:gWGunr7x436デフォルトの名無しさん
2018/10/05(金) 20:29:10.24ID:ZpFL29Ml 「サンプル」のCSVを文末の「結果」に変換するプログラムをPerlで作りたいです。
● サンプルのCSVの構造:
1コラム目:数字8桁の昇順、2コラム目:数字1桁、3コラム目:文字列
● 作りたいプログラム:
1コラム目、3コラム目は保持する。複数レコードで1コラム目に重複があれば、
それらの複数レコードの2コラム目の1桁数字を連番にする。
1コラム目に重複がない場合は、当該レコードの2コラム目を1にする。
● 「サンプル」
06030002,6,文字列A
06030004,3,文字列B
06030004,4,文字列C
06030004,5,文字列D
06030005,3,文字列E
06030005,4,文字列F
06030006,3,文字列G
06030006,4,文字列H
06030006,7,文字列I
06030007,3,文字列J
06030008,3,文字列K
● 「結果」
06030002,1,文字列A
06030004,1,文字列B
06030004,2,文字列C
06030004,3,文字列D
06030005,1,文字列E
06030005,2,文字列F
06030006,1,文字列G
06030006,2,文字列H
06030006,3,文字列I
06030007,1,文字列J
06030008,1,文字列K
● サンプルのCSVの構造:
1コラム目:数字8桁の昇順、2コラム目:数字1桁、3コラム目:文字列
● 作りたいプログラム:
1コラム目、3コラム目は保持する。複数レコードで1コラム目に重複があれば、
それらの複数レコードの2コラム目の1桁数字を連番にする。
1コラム目に重複がない場合は、当該レコードの2コラム目を1にする。
● 「サンプル」
06030002,6,文字列A
06030004,3,文字列B
06030004,4,文字列C
06030004,5,文字列D
06030005,3,文字列E
06030005,4,文字列F
06030006,3,文字列G
06030006,4,文字列H
06030006,7,文字列I
06030007,3,文字列J
06030008,3,文字列K
● 「結果」
06030002,1,文字列A
06030004,1,文字列B
06030004,2,文字列C
06030004,3,文字列D
06030005,1,文字列E
06030005,2,文字列F
06030006,1,文字列G
06030006,2,文字列H
06030006,3,文字列I
06030007,1,文字列J
06030008,1,文字列K
437デフォルトの名無しさん
2018/10/05(金) 21:39:08.56ID:liWk4NPs まずは自分で書いてみたコードを晒すところからだな。
438デフォルトの名無しさん
2018/10/05(金) 22:57:27.02ID:kjx9soPU 一行プログラムが思い浮かんだ。
最初の列をハッシュのキーにして3列目をpush。
全部読んだらキーをソートして読んだ内容に番号降りつつ出力。
しかし俺は今電車の中からスマホで書いてるのでここに書く気が起きない。
最初の列をハッシュのキーにして3列目をpush。
全部読んだらキーをソートして読んだ内容に番号降りつつ出力。
しかし俺は今電車の中からスマホで書いてるのでここに書く気が起きない。
439デフォルトの名無しさん
2018/10/06(土) 00:22:39.61ID:mGKg2bAW Ruby で作った
require 'csv'
count = Hash.new( 0 ) # 初期値は、0
# コロン区切りのCSV 入力ファイルを、1行ずつ処理する
CSV.foreach( "input.csv" ) do |row|
count[ row[ 0 ] ] += 1
row[ 1 ] = count[ row[ 0 ] ]
puts row.join( "," )
end
require 'csv'
count = Hash.new( 0 ) # 初期値は、0
# コロン区切りのCSV 入力ファイルを、1行ずつ処理する
CSV.foreach( "input.csv" ) do |row|
count[ row[ 0 ] ] += 1
row[ 1 ] = count[ row[ 0 ] ]
puts row.join( "," )
end
440デフォルトの名無しさん
2018/10/06(土) 02:20:13.04ID:m3dYH3N7441デフォルトの名無しさん
2018/10/06(土) 03:33:56.69ID:gPBhgV7B my @y = "";
while(<>) {
my @x = split ",";
# $x[1] = $x[0] eq $y[0] && ++$y[1] || 1;
$x[1] = $x[0] ne $y[0] || ++$y[1];
print join ",", (@y = @x);
}
ウチでやるならこうかしら
while(<>) {
my @x = split ",";
# $x[1] = $x[0] eq $y[0] && ++$y[1] || 1;
$x[1] = $x[0] ne $y[0] || ++$y[1];
print join ",", (@y = @x);
}
ウチでやるならこうかしら
442438
2018/10/06(土) 06:07:28.44ID:J8Y2BFN6 おはよう。
元のテキストが s.txt に入っているとして、こうする。
perl -ne 'chomp;@d=split/,/;push(@{$h{$d[0]}},$d[2]);END{for(sort keys%h){for($i=0;$i<@{$h{$_}};$i++){print join(",",$_,$i+1,$h{$_}[$i])."\n"}}}' s.txt
なげーなw
元のテキストが s.txt に入っているとして、こうする。
perl -ne 'chomp;@d=split/,/;push(@{$h{$d[0]}},$d[2]);END{for(sort keys%h){for($i=0;$i<@{$h{$_}};$i++){print join(",",$_,$i+1,$h{$_}[$i])."\n"}}}' s.txt
なげーなw
443438
2018/10/06(土) 06:21:52.15ID:J8Y2BFN6 あ、そうか。貯め込む必要はなくてハッシュ作ってそのまんま出せば良いんだよな。
じゃあawkの方が楽ではないか?
awk -F, 'BEGIN{OFS=","}{n[$1]++;print $1,n[$1],$3}' s.txt
じゃあawkの方が楽ではないか?
awk -F, 'BEGIN{OFS=","}{n[$1]++;print $1,n[$1],$3}' s.txt
444デフォルトの名無しさん
2018/10/06(土) 17:28:12.58ID:MMGbFZjG 436です。皆様ありがとうございました。
自分では1行ずつ処理することまでしかできず、複数レコードの
1コラム目の比較をすることができませんでした。
おかげさまで体育の日に子供の運動会に行けます!
ありがとうございました!
自分では1行ずつ処理することまでしかできず、複数レコードの
1コラム目の比較をすることができませんでした。
おかげさまで体育の日に子供の運動会に行けます!
ありがとうございました!
445デフォルトの名無しさん
2018/11/11(日) 14:10:45.60ID:eqm/EHYd 上の方のレスにも関連したものがありますが、
ファイルから読み込んだ文字列データにて
パターンマッチがヒットしません。
同一文字列を直接コード内に定義すると、ヒットします。
出来ればファイルに切り出したいので、
ご教示いただけますでしょうか。
ファイルから読み込んだ文字列データにて
パターンマッチがヒットしません。
同一文字列を直接コード内に定義すると、ヒットします。
出来ればファイルに切り出したいので、
ご教示いただけますでしょうか。
446デフォルトの名無しさん
2018/11/11(日) 14:11:11.73ID:eqm/EHYd [環境]
Activeperl win8.1 or 2016 server
perl -v
This is perl 5, version 24, subversion 3 (v5.24.3) built for MSWin32-x64-multi-thread
[コード utf-8で作成]
#res[1]にはcp932のコードの「テスト」を含む文字列が格納されている。
$res[1] = Encode::decode('cp932', $res[1]);
#patern.txtはutf-8で「テスト」の文字列が格納されている。
open (FILE, "<:utf8", "patern.txt") or (die "$!");
my $line = <FILE>;
close(FILE);
#$line = 'テスト';←#を外して直接コードに書くとヒットする。
print encode('cp932', $line);(正常に取得できている。)
if ($res[1] =~ /$line/){
print "Hit!";
} else{
print "not Hit";
}
---出力---
>テスト
>not Hit
Activeperl win8.1 or 2016 server
perl -v
This is perl 5, version 24, subversion 3 (v5.24.3) built for MSWin32-x64-multi-thread
[コード utf-8で作成]
#res[1]にはcp932のコードの「テスト」を含む文字列が格納されている。
$res[1] = Encode::decode('cp932', $res[1]);
#patern.txtはutf-8で「テスト」の文字列が格納されている。
open (FILE, "<:utf8", "patern.txt") or (die "$!");
my $line = <FILE>;
close(FILE);
#$line = 'テスト';←#を外して直接コードに書くとヒットする。
print encode('cp932', $line);(正常に取得できている。)
if ($res[1] =~ /$line/){
print "Hit!";
} else{
print "not Hit";
}
---出力---
>テスト
>not Hit
447デフォルトの名無しさん
2018/11/11(日) 16:14:59.60ID:56YuZzmp >>446
改行文字の有無?
改行文字の有無?
448デフォルトの名無しさん
2018/11/11(日) 18:17:18.70ID:t5AG7sJB たぶんそれだな。$line の中身が "テスト\r\n" または "テスト\n" になってそう。
449デフォルトの名無しさん
2018/11/12(月) 00:16:54.10ID:MtlIUxHY chomp($line); するべき
450デフォルトの名無しさん
2018/11/12(月) 07:45:13.53ID:8fj5l105 遅くなりすみません。
テストファイルには改行を入れていなかったのですが、
chompが必要なのですね。
ファイルからレコードを取得するにはchompが必要と勉強になりました。
ありがとうございました。
テストファイルには改行を入れていなかったのですが、
chompが必要なのですね。
ファイルからレコードを取得するにはchompが必要と勉強になりました。
ありがとうございました。
451デフォルトの名無しさん
2018/11/12(月) 09:22:08.61ID:I5PkaEyl >>450
いや、改行は入っていると思うぞ。でなければあのプログラムでは一致する。
いや、改行は入っていると思うぞ。でなければあのプログラムでは一致する。
452デフォルトの名無しさん
2018/11/13(火) 17:15:58.77ID:WOZg75XW utf-8がボムがついている可能性もあるね
453デフォルトの名無しさん
2018/11/13(火) 17:46:33.84ID:/6RlnNZj ところでUTF-8にBOMってなんか意味あるの?
ビッグエンディアンで上のビットから詰め込んで並べている1パターンしかないよね?
ビッグエンディアンで上のビットから詰め込んで並べている1パターンしかないよね?
454デフォルトの名無しさん
2018/11/13(火) 18:09:12.36ID:3HdfrOce455デフォルトの名無しさん
2018/11/13(火) 19:44:37.81ID:/6RlnNZj あー。magic用か。
456デフォルトの名無しさん
2018/11/14(水) 00:34:48.87ID:efwoHdbt457デフォルトの名無しさん
2018/11/14(水) 09:45:09.68ID:bDqFuzUS >>456
手順としてはまず比較に都合のいいように比較する側とされる側の文字列を正規化する。
例えば半角は全て全角にし、濁点や半濁点はそれを含んだ文字にし、英小文字は大文字にする。
それから比較を行う。
ただし使われている文字がASCIIの文字だけならば // のオプションで i が使えるので正規化不要。
手順としてはまず比較に都合のいいように比較する側とされる側の文字列を正規化する。
例えば半角は全て全角にし、濁点や半濁点はそれを含んだ文字にし、英小文字は大文字にする。
それから比較を行う。
ただし使われている文字がASCIIの文字だけならば // のオプションで i が使えるので正規化不要。
458デフォルトの名無しさん
2018/11/14(水) 12:24:46.73ID:XfG22Q3S 教えて下さい。
my @str4=['a','b','c','d','e'];
my $ref4=\@str4;
print $str4[0][1],"\n"; # b
print @{ $str4[0] },"\n"; # abcde
ref4を使って同様に b と abcde を表示するには、どうしたらいいですか?
my @str4=['a','b','c','d','e'];
my $ref4=\@str4;
print $str4[0][1],"\n"; # b
print @{ $str4[0] },"\n"; # abcde
ref4を使って同様に b と abcde を表示するには、どうしたらいいですか?
459デフォルトの名無しさん
2018/11/14(水) 12:38:11.11ID:XfG22Q3S うっかり自己解決しました。数時間悩んだのに。
print @{ ${ $ref4 }[0] };
print @{ ${ $ref4 }[0] }[1];
print @{ ${ $ref4 }[0] };
print @{ ${ $ref4 }[0] }[1];
460デフォルトの名無しさん
2018/11/14(水) 19:36:24.69ID:dXHPcciK >>457
オプションで可能であればと思ったのですが、マッチング文字列と対象を同じ文字種にしないといけないんですね。
ActivePerlでUnicode::Japanese
でUTF8から変換して書いてみたのですが、cp932にencodeすると、化けてしまい、使用できませんでした。
ActivePerlで使用可能なモジュールあればコードではなくてかまいませんので、何かあれば紹介してもらえますでしょうか。
オプションで可能であればと思ったのですが、マッチング文字列と対象を同じ文字種にしないといけないんですね。
ActivePerlでUnicode::Japanese
でUTF8から変換して書いてみたのですが、cp932にencodeすると、化けてしまい、使用できませんでした。
ActivePerlで使用可能なモジュールあればコードではなくてかまいませんので、何かあれば紹介してもらえますでしょうか。
461デフォルトの名無しさん
2018/11/14(水) 20:41:47.52ID:bryEJhFF UNICODEにはcomposed、decomposedというややこしいものもあるんだよね。
https://pointoht.ti-da.net/e8205606.html
Unicode::Normalizeってのがあるけど、日本語を特別扱いしてくれたりはしなさそうな予感。
https://pointoht.ti-da.net/e8205606.html
Unicode::Normalizeってのがあるけど、日本語を特別扱いしてくれたりはしなさそうな予感。
462デフォルトの名無しさん
2018/11/14(水) 22:57:23.73ID:otO/yyOk >>453-455
Linux では、BOM なしUTF-8 を使う、アプリ開発者が多く、
BOMありにするとバグるアプリがあるから、BOMなしを使っているけど、
そうすると、Windows では、sjis と区別がつかなくなり、
Explorer での文字列検索ができなくなる
だから、Windows10 で、WSL, Ubuntu を導入して、grep を使っている
Linux では、BOM なしUTF-8 を使う、アプリ開発者が多く、
BOMありにするとバグるアプリがあるから、BOMなしを使っているけど、
そうすると、Windows では、sjis と区別がつかなくなり、
Explorer での文字列検索ができなくなる
だから、Windows10 で、WSL, Ubuntu を導入して、grep を使っている
463462
2018/11/14(水) 23:51:54.30ID:otO/yyOk 結合文字列をUnicode正規化で合成する方法の危険性
https://qiita.com/monokano/items/d4c37d9bc9833eaeda6e
濁点・半濁点を別の1文字として扱う、結合文字列はMac だけだから、Mac を使わないなら関係ない
Unicode正規化は、日中韓で、別の漢字に変換されるものがあるから使えない
Ruby では、sjis・UTF-8 の変換は、ファイル読み書き時に指定できる。
CRLF・LF の改行コードの違いは、意識したことがない。
chomp とか、どちらの改行コードでも、正常に動く
https://qiita.com/monokano/items/d4c37d9bc9833eaeda6e
濁点・半濁点を別の1文字として扱う、結合文字列はMac だけだから、Mac を使わないなら関係ない
Unicode正規化は、日中韓で、別の漢字に変換されるものがあるから使えない
Ruby では、sjis・UTF-8 の変換は、ファイル読み書き時に指定できる。
CRLF・LF の改行コードの違いは、意識したことがない。
chomp とか、どちらの改行コードでも、正常に動く
464462
2018/11/15(木) 00:11:38.19ID:g74yzjtM 【 nkf 】コマンド――文字コードと改行コードを変換する
http://www.atmarkit.co.jp/ait/articles/1609/29/news016.html
これで全角・半角の変換もできる
Perl にも、モジュールもあるのでは?
http://www.atmarkit.co.jp/ait/articles/1609/29/news016.html
これで全角・半角の変換もできる
Perl にも、モジュールもあるのでは?
465デフォルトの名無しさん
2018/11/21(水) 22:55:48.65ID:M0TZNmLm466デフォルトの名無しさん
2018/11/21(水) 23:00:44.11ID:M0TZNmLm ハッシュを要素に持つハッシュへのアクセスについて
ご教示いただけますでしょうか。
下記のコードで、読込は正常に完了しますが、出力が不可能です。
$$を使用したり、試しましたがギブアップです。
#hash.txtの中身(タブ区切り)
#1 10 テスト1
#2 5 テスト2
use Encode;
use utf8;
my %table;
my %rec;
open (FILE, "<:utf8", "hash.txt") or (die "$!");
while(my $line = <FILE>){
chomp($line);
@d = split(/\t/, $line);
%rec = ('id' => $d[0], 'count' => $d[1], 'name' => $d[2]);
$table{$d[0]} = \%rec;
print encode('cp932', $table{$d[0]}{'id'})."\t". encode('cp932', $table{$d[0]}{'count'})."\t".encode('cp932', $table{$d[0]}{'name'})."\n";
}
close(FILE);
print Encode::encode('cp932', "読込完了\n");
foreach my $row (@$wrote_num){
#出力不可能
print encode('cp932', $row{'id'})."\t". encode('cp932', $row{'count'})."\t".encode('cp932', $row{'name'})."\n";
}
print Encode::encode('cp932', "$出力完了\n");
ご教示いただけますでしょうか。
下記のコードで、読込は正常に完了しますが、出力が不可能です。
$$を使用したり、試しましたがギブアップです。
#hash.txtの中身(タブ区切り)
#1 10 テスト1
#2 5 テスト2
use Encode;
use utf8;
my %table;
my %rec;
open (FILE, "<:utf8", "hash.txt") or (die "$!");
while(my $line = <FILE>){
chomp($line);
@d = split(/\t/, $line);
%rec = ('id' => $d[0], 'count' => $d[1], 'name' => $d[2]);
$table{$d[0]} = \%rec;
print encode('cp932', $table{$d[0]}{'id'})."\t". encode('cp932', $table{$d[0]}{'count'})."\t".encode('cp932', $table{$d[0]}{'name'})."\n";
}
close(FILE);
print Encode::encode('cp932', "読込完了\n");
foreach my $row (@$wrote_num){
#出力不可能
print encode('cp932', $row{'id'})."\t". encode('cp932', $row{'count'})."\t".encode('cp932', $row{'name'})."\n";
}
print Encode::encode('cp932', "$出力完了\n");
467デフォルトの名無しさん
2018/11/22(木) 00:04:25.39ID:V9xGGA7p wrote_numが何か分からんけど
my %rec; はwhile内にしたらどうですか
あと、$rowはハッシュのリファレンスだろうから$row->{'id'}では
my %rec; はwhile内にしたらどうですか
あと、$rowはハッシュのリファレンスだろうから$row->{'id'}では
468デフォルトの名無しさん
2018/11/22(木) 10:12:03.32ID:iCX1SQ90 >>467
すみません、レス用に書き換えた元がwote_numでした
下記の様に変えましたが、アクセスできません。
意外と難しいですね。
use Encode;
use utf8;
my %table;
open (FILE, "<:utf8", "hash.txt") or (die "$!");
while(my $line = <FILE>){
chomp($line);
@d = split(/\t/, $line);
my %rec = ('id' => $d[0], 'count' => $d[1], 'name' => $d[2]);
$table{$d[0]} = \%rec;
print encode('cp932', $table{$d[0]}{'id'})."\t". encode('cp932', $table{$d[0]}{'count'})."\t".encode('cp932', $table{$d[0]}{'name'})."\n";
}
close(FILE);
print Encode::encode('cp932', "読込完了\n");
foreach my $row (@$table){
print encode('cp932', $row->{'id'})."\t". encode('cp932', $row->{'count'})."\t".encode('cp932', $row->{'name'})."\n";
}
print Encode::encode('cp932', "$出力完了\n");
実行結果:まだアクセスできません
>hash_test.pl
1 10 テスト1
2 5 テスト2
読込完了
出力完了
すみません、レス用に書き換えた元がwote_numでした
下記の様に変えましたが、アクセスできません。
意外と難しいですね。
use Encode;
use utf8;
my %table;
open (FILE, "<:utf8", "hash.txt") or (die "$!");
while(my $line = <FILE>){
chomp($line);
@d = split(/\t/, $line);
my %rec = ('id' => $d[0], 'count' => $d[1], 'name' => $d[2]);
$table{$d[0]} = \%rec;
print encode('cp932', $table{$d[0]}{'id'})."\t". encode('cp932', $table{$d[0]}{'count'})."\t".encode('cp932', $table{$d[0]}{'name'})."\n";
}
close(FILE);
print Encode::encode('cp932', "読込完了\n");
foreach my $row (@$table){
print encode('cp932', $row->{'id'})."\t". encode('cp932', $row->{'count'})."\t".encode('cp932', $row->{'name'})."\n";
}
print Encode::encode('cp932', "$出力完了\n");
実行結果:まだアクセスできません
>hash_test.pl
1 10 テスト1
2 5 テスト2
読込完了
出力完了
469デフォルトの名無しさん
2018/11/22(木) 10:30:19.76ID:Enb78Zev これでいけると思いましたが、玉砕でしたw
foreach my $row (@$table){
while (my ($id, $count, $name) = each(%row)){
print encode('cp932', "$id\t$count\t$name\n");
}
foreach my $row (@$table){
while (my ($id, $count, $name) = each(%row)){
print encode('cp932', "$id\t$count\t$name\n");
}
470デフォルトの名無しさん
2018/11/22(木) 10:54:51.08ID:iCX1SQ90 これでいけました!
foreach my $row (keys %table){
print encode('cp932', "$table{$row}{'id'}\t$table{$row}{'count'}\t$table{$row}{'name'}\n");
}
>hash_test.pl
1 10 テスト1
2 5 テスト2
読込完了
1 10 テスト1
2 5 テスト2
出力完了
ただ、key を外して foreach my $row (%table)とすると下記の通り改行が入ります
1 10 テスト1
2 5 テスト2
出力完了
foreach my $row (keys %table){
print encode('cp932', "$table{$row}{'id'}\t$table{$row}{'count'}\t$table{$row}{'name'}\n");
}
>hash_test.pl
1 10 テスト1
2 5 テスト2
読込完了
1 10 テスト1
2 5 テスト2
出力完了
ただ、key を外して foreach my $row (%table)とすると下記の通り改行が入ります
1 10 テスト1
2 5 テスト2
出力完了
471デフォルトの名無しさん
2018/11/22(木) 11:07:56.03ID:Enb78Zev これで全てのハッシュ要素を出力できますが、
カラム順が不確定になってしまいますね。
ハッシュなので仕方ないことですかね。
foreach $row (sort keys %table) {
foreach $col (sort keys %{$table{$row}}) {
print encode('cp932', "$table{$row}{$col}\t");
}
print "\n";
}
>hash_test.pl
1 10 テスト1
2 5 テスト2
読込完了
5 2 テスト2
10 1 テスト1
出力完了
カラム順が不確定になってしまいますね。
ハッシュなので仕方ないことですかね。
foreach $row (sort keys %table) {
foreach $col (sort keys %{$table{$row}}) {
print encode('cp932', "$table{$row}{$col}\t");
}
print "\n";
}
>hash_test.pl
1 10 テスト1
2 5 テスト2
読込完了
5 2 テスト2
10 1 テスト1
出力完了
472デフォルトの名無しさん
2018/11/22(木) 12:53:27.47ID:+z2Jd1go >>471
キーだけ別の配列に取っといてそれ使えば?
キーだけ別の配列に取っといてそれ使えば?
473デフォルトの名無しさん
2018/11/25(日) 19:58:05.78ID:Ngr2zrFy >>472
できれば要素をカラム名でアクセスしたいのでハッシュの方がいいのですが、カラム順固定出力は配列しかないということですね。
できれば要素をカラム名でアクセスしたいのでハッシュの方がいいのですが、カラム順固定出力は配列しかないということですね。
474デフォルトの名無しさん
2018/11/25(日) 21:54:59.45ID:CqrOufwt 両方使えば良いのでは たまにやるよ
475デフォルトの名無しさん
2018/11/26(月) 04:07:41.06ID:LFi/GsCA >>471
foreach $col (sort keys %{$table{$row}}) {
を
foreach $col (qw/id count name/) {
とかでは? keyの名前も順番も分かってるんだし。
foreach $col (sort keys %{$table{$row}}) {
を
foreach $col (qw/id count name/) {
とかでは? keyの名前も順番も分かってるんだし。
476デフォルトの名無しさん
2019/06/24(月) 04:43:33.88ID:4+LiJo6+ 自分が昔質問したことにたいして今なら回答できる
<> は <STDIN> の単なる略ではなく
@ARGV が捕れない副作用があった
そこに詰まっていた
#!/usr/bin/env perl
use 5.010;
if (-p STDIN) {
print "May be pipe is used. I've got STDIN as below\n";
# my @lines = <STDIN>; # when <> used, perl think no @ARGV
map {state $i; ++$i;print "$i $_" } <STDIN>;
}
else {
print "This may be just single running.\n";
}
map {state $i; ++$i; print "$i argment found ==> $_\n"} @ARGV;
<> は <STDIN> の単なる略ではなく
@ARGV が捕れない副作用があった
そこに詰まっていた
#!/usr/bin/env perl
use 5.010;
if (-p STDIN) {
print "May be pipe is used. I've got STDIN as below\n";
# my @lines = <STDIN>; # when <> used, perl think no @ARGV
map {state $i; ++$i;print "$i $_" } <STDIN>;
}
else {
print "This may be just single running.\n";
}
map {state $i; ++$i; print "$i argment found ==> $_\n"} @ARGV;
477デフォルトの名無しさん
2019/08/29(木) 20:58:11.72ID:72vdfcsY タグを除去したいのですが、<>も文に入っているため
<.*?>ではなく<("[^"]*"|'[^']*'|[^'">])*>を使いたいのですが
perl -pe '<("[^"]*"|'[^']*'|[^'">])*>'
にする場合どれどれをエスケープすればよいでしょうか?
’だけだと動きませんでした。
perl -pe '<("[^"]*"|\'[^\']*\'|[^'">])*>'
<.*?>ではなく<("[^"]*"|'[^']*'|[^'">])*>を使いたいのですが
perl -pe '<("[^"]*"|'[^']*'|[^'">])*>'
にする場合どれどれをエスケープすればよいでしょうか?
’だけだと動きませんでした。
perl -pe '<("[^"]*"|\'[^\']*\'|[^'">])*>'
478デフォルトの名無しさん
2019/08/30(金) 12:09:22.02ID:VkI78Ia/ 除去?だったらs/パターン//gみたいにやらないと何も変わらないのでは?
てか、それエラーにならないの?
てか、それエラーにならないの?
479デフォルトの名無しさん
2019/08/30(金) 13:51:46.18ID:XCxRWcZV 5chの書き込みのほう、つけ忘れてました
perl -pe 's/<("[^"]*"|'[^']*'|[^'">])*>//g'
です
perl -pe 's/<.*?>//g'は動くんですけど
perl -pe '<("[^"]*"|\'[^\']*\'|[^'">])*>'だと動かないんですよね
perl -pe 's/<("[^"]*"|'[^']*'|[^'">])*>//g'
です
perl -pe 's/<.*?>//g'は動くんですけど
perl -pe '<("[^"]*"|\'[^\']*\'|[^'">])*>'だと動かないんですよね
480デフォルトの名無しさん
2019/08/30(金) 13:52:36.95ID:XCxRWcZV またやっちゃった
perl -pe 's/<("[^"]*"|\'[^\']*\'|[^'">])*>//g'
perl -pe 's/<("[^"]*"|\'[^\']*\'|[^'">])*>//g'
481デフォルトの名無しさん
2019/08/30(金) 17:21:58.25ID:8Dc5lx9D こうか?
perl -pe 's/<("[^"]*"|'"'"'[^'"'"']*'"'"'|[^'"'"'">])*>//g'
perlというよりシェルのシングルクォートの問題
perl -pe 's/<("[^"]*"|'"'"'[^'"'"']*'"'"'|[^'"'"'">])*>//g'
perlというよりシェルのシングルクォートの問題
482デフォルトの名無しさん
2019/08/30(金) 17:42:16.91ID:fIMZQtfT そこまでするくらいなら HTML::Parser を使う方がいいと思うよ。
483デフォルトの名無しさん
2019/08/30(金) 17:56:41.24ID:XCxRWcZV >481
できました!、ありがとうございます。
'を'""'で括るのですね
なんで\でエスケープにならないんでしょうね
できました!、ありがとうございます。
'を'""'で括るのですね
なんで\でエスケープにならないんでしょうね
484デフォルトの名無しさん
2019/08/30(金) 18:04:26.61ID:XCxRWcZV パーサーも一度使ってみたんですが
<p>hoge</p><p>hoge</p>
pタグが一行に2つあると誤作動したりするんですよね
<p>hoge</p><p>hoge</p>
pタグが一行に2つあると誤作動したりするんですよね
485デフォルトの名無しさん
2019/08/30(金) 23:22:18.80ID:fIMZQtfT その誤作動がパーサーのせいかどうかは判らないが、少なくとも
HTML::Parser でそんなことは起こらないから安心してほしい。
たとえばテキスト部分だけを出力したいならこんな感じでできる。
my $parser = HTML::Parser->new(
text_h => [sub { print( $_[0]) },'text'],
);
$parser->parse_file( \*STDIN);
HTML::Parser でそんなことは起こらないから安心してほしい。
たとえばテキスト部分だけを出力したいならこんな感じでできる。
my $parser = HTML::Parser->new(
text_h => [sub { print( $_[0]) },'text'],
);
$parser->parse_file( \*STDIN);
486デフォルトの名無しさん
2019/08/31(土) 00:18:32.04ID:mx6W2BK8 >485
参考になります。
パーサーもいろいろ種類あるみたいですね。
自分の使ってたのはhtml-xml-utilsというやつでした。
参考になります。
パーサーもいろいろ種類あるみたいですね。
自分の使ってたのはhtml-xml-utilsというやつでした。
487デフォルトの名無しさん
2021/04/21(水) 00:35:38.31ID:J2c8I4ei @aに0を100ケ追加するには、pushをforで100回回す以外の方法ありますか
488デフォルトの名無しさん
2021/04/21(水) 03:07:59.27ID:aE0oGLsa push(@a, (0) x 100);
489デフォルトの名無しさん
2021/04/27(火) 18:16:47.03ID:OX0aAdkQ490デフォルトの名無しさん
2021/11/19(金) 22:27:21.73ID:v67hT9Zk 二つ以上の空白文字列を
一つの空白に変えたいのですが
うまくいきません。
if($line=~/\s\s+/){
$line=~s/\s\s+/\s/g
print("$line\n")
}
一つの空白に変えたいのですが
うまくいきません。
if($line=~/\s\s+/){
$line=~s/\s\s+/\s/g
print("$line\n")
}
491デフォルトの名無しさん
2021/11/20(土) 02:07:02.21ID:h6kzSIM/ $line=~s/¥s¥s+/ /g
では?
では?
492デフォルトの名無しさん
2021/11/20(土) 20:14:01.04ID:xbsxU5SW s/\s\s+/ /g;
でうまくいったよ。
そうか、\sって正規表現だから、置換文字列に使うと「perl にそんな定義ないで!」ってなるのか。
これは俺も気を付けよう。
でうまくいったよ。
そうか、\sって正規表現だから、置換文字列に使うと「perl にそんな定義ないで!」ってなるのか。
これは俺も気を付けよう。
493デフォルトの名無しさん
2021/11/20(土) 20:36:42.09ID:xbsxU5SW 置換といえばこのまえ、JSONで取得したUnicodeを表示したくて、
\u3042 → \N{U+3042}
に置換しようとしたけど、できなかった。
\N{U+ }←ここにはリテラルしか書けないのかな。
\u3042 → \N{U+3042}
に置換しようとしたけど、できなかった。
\N{U+ }←ここにはリテラルしか書けないのかな。
494デフォルトの名無しさん
2021/12/14(火) 19:15:14.22ID:LP8Fmqr9 if文で真偽値を判定するのってどうやるの?
hoge() or die("Error\n");
ってなってた(hoge()の戻り値が魏ならエラー)のを標準出力したくて
my $a = hoge();
if( ! $a ){ print("Error\n"); exit $!; }
みたいにしたんだけど、if文の書き方ってこんなんで良いの?
hoge() or die("Error\n");
ってなってた(hoge()の戻り値が魏ならエラー)のを標準出力したくて
my $a = hoge();
if( ! $a ){ print("Error\n"); exit $!; }
みたいにしたんだけど、if文の書き方ってこんなんで良いの?
495デフォルトの名無しさん
2021/12/25(土) 19:09:39.02ID:pJ3Bii8w496デフォルトの名無しさん
2021/12/25(土) 20:31:09.16ID:62MjaTIU497デフォルトの名無しさん
2021/12/30(木) 05:41:55.25ID:grPlj9k3 良くないんだってば。
Perlをそういう流儀でやってるといつか痛い目にあうよ。
Perlをそういう流儀でやってるといつか痛い目にあうよ。
498494ではない
2021/12/30(木) 08:07:22.12ID:j5bdR14I499デフォルトの名無しさん
2021/12/30(木) 17:49:56.83ID:QArx8wCq そういう言語なの
0 but true
なんていう値もあるし
0 but true
なんていう値もあるし
500デフォルトの名無しさん
2022/01/10(月) 19:33:13.97ID:2hS04FMw do what perl mean
501デフォルトの名無しさん
2022/01/11(火) 00:17:50.61ID:Xf79Fgui bool値ほしい
502デフォルトの名無しさん
2022/03/27(日) 23:43:39.11ID:TRkpHzjA >>497
じゃあどうすればいいの?
じゃあどうすればいいの?
503デフォルトの名無しさん
2022/04/28(木) 20:33:01.74ID:KupWcmJ5 元の
hoge() or die("Error\n");
が問題なく動いてるなら
hoge() or print("Error\n"), die $!;
hoge() or die("Error\n");
が問題なく動いてるなら
hoge() or print("Error\n"), die $!;
504デフォルトの名無しさん
2022/06/11(土) 13:31:52.57ID:XcUjU1KU505デフォルトの名無しさん
2023/12/15(金) 06:59:42.19ID:aRdlBUAD $_ ← これ、なんて読む?
perlが発祥ってわけでもないそうだが(bashとかにもあるんだってね)、ガチのドザなので
俺は内心ドルバーって呼んでる
perlが発祥ってわけでもないそうだが(bashとかにもあるんだってね)、ガチのドザなので
俺は内心ドルバーって呼んでる
506デフォルトの名無しさん
2023/12/19(火) 00:32:16.33ID:LgO8Ui43 ドル・アンダーバーじゃないかな。
設定によってはチルダの代わりにトップバーってのがあったから、それと区別するのにアンダーって言ってた気がする。
設定によってはチルダの代わりにトップバーってのがあったから、それと区別するのにアンダーって言ってた気がする。
507505
2023/12/21(木) 12:15:47.33ID:nsa/DjJa おつあり
そういやそんなの(トップバー)あったねえ なるほど
そういやそんなの(トップバー)あったねえ なるほど
508デフォルトの名無しさん
2024/02/09(金) 17:07:48.28ID:LEmbefGZ509デフォルトの名無しさん
2024/03/03(日) 23:39:10.39ID:1cRqRnnX なつかしのcgiゲームを設置したくてperlを触ってるのですが、今の時代でもcgiゲームはサーバーへの負荷は大きいのでしょうか?(昔はよくゲームの設置が禁止されてましたが)
perlと関係なかったらすみません…
perlと関係なかったらすみません…
510デフォルトの名無しさん
2024/03/16(土) 03:41:28.53ID:I49Gallj StrawberryPerlで
$str='あ';
if ($str =~ /^[あいう]$/) {print("match\n");}
を実行してみるとマッチしてくれません
/^(あ|い|う)$/ ならマッチするのですが
古いPerl4のjperlなら /^[あいう]$/ でもマッチします
やはりこれはStrawberryPerlのバグ(または仕様)なのでしょうか
$str='あ';
if ($str =~ /^[あいう]$/) {print("match\n");}
を実行してみるとマッチしてくれません
/^(あ|い|う)$/ ならマッチするのですが
古いPerl4のjperlなら /^[あいう]$/ でもマッチします
やはりこれはStrawberryPerlのバグ(または仕様)なのでしょうか
511デフォルトの名無しさん
2024/03/16(土) 08:42:58.43ID:E8XsMGej print length $str; を入れてみたらわかる
512デフォルトの名無しさん
2024/03/16(土) 09:03:33.98ID:E8XsMGej もしかして: \p{sc=Hiragana}
513デフォルトの名無しさん
2024/03/16(土) 09:16:48.08ID:1WMRgWrv ネタにマジレス
514デフォルトの名無しさん
2024/03/16(土) 11:57:07.41ID:Xoe9pkvE515デフォルトの名無しさん
2024/03/16(土) 15:20:26.94ID:e8kHlvhU 少なくともperl5.8以降の文字クラスはuse utf8;前提になっててlengthが1じゃないとだめじゃね?
516デフォルトの名無しさん
2024/03/16(土) 15:27:36.56ID:HqlfXJdH 推奨されてないけど
use encoding 'sjis'
ならsjisでコード書けたと思う
jperlナツカシス
use encoding 'sjis'
ならsjisでコード書けたと思う
jperlナツカシス
517デフォルトの名無しさん
2024/03/24(日) 16:38:15.53ID:gHSiAGjm Windows では Filter::Encoding いれて使ってた
スクリプトは utf-8 で書いて use utf8 してたけど
コマンドラインでは -MFilter::Encoding=cp932 とか
スクリプトは utf-8 で書いて use utf8 してたけど
コマンドラインでは -MFilter::Encoding=cp932 とか
518デフォルトの名無しさん
2024/07/23(火) 22:33:05.15ID:Ott+kcdk https://github.com/StrawberryPerl/Perl-Dist-Strawberry/releases/tag/SP_5.39.10
Strawberry Perl 5.39.10.1
Strawberry Perl 5.39.10.1
519デフォルトの名無しさん
2024/07/23(火) 22:33:17.30ID:Ott+kcdk520デフォルトの名無しさん
2025/04/07(月) 15:52:26.28ID:ahUtunTX perlを使った応募フォームで同一人物からの応募を省きたいのですが、IPアドレス以外で応募者を識別する方法はありますか?
個人サイトの小さな応募フォームなので完璧でなくても大丈夫です
お知恵を貸していただけると助かります
個人サイトの小さな応募フォームなので完璧でなくても大丈夫です
お知恵を貸していただけると助かります
521デフォルトの名無しさん
2025/04/07(月) 17:32:14.55ID:aZeLbslJ cookie はどうよ?
522デフォルトの名無しさん
2025/04/07(月) 19:10:26.23ID:LICdw+AC むしろIPでは個人識別無理
523デフォルトの名無しさん
2025/04/09(水) 23:14:04.55ID:X4PDIxY1レスを投稿する
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 [ぐれ★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 外務局長「中国さんごめんなさぁ...」小野田「中国なんかどうでもいいっ!」高市「首脳会談したい」マスコミ「立憲が悪いっ!!」 [237216734]
- 中国高官と話す外務省局長の表情、やばい ★2 [175344491]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【悲報】日本人「日本が中国と戦争になったら世界中の国が応援してくれるぞ!」 [616817505]
- 小野田経済安保相「すぐに経済的威圧するところへの依存はリスク」😲 [861717324]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
