これで全てのハッシュ要素を出力できますが、
カラム順が不確定になってしまいますね。
ハッシュなので仕方ないことですかね。
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
出力完了
探検
Perl初心者スレ(マジレス回答)
471デフォルトの名無しさん
2018/11/22(木) 11:07:56.03ID:Enb78Zev472デフォルトの名無しさん
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レスを投稿する
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」★2 [ぐれ★]
- 【速報】 日経平均の下落率3%超す、財政懸念で長期金利上昇 [お断り★]
- ナイツ塙が指摘のローソンコーヒーカップ、ロゴ「L」で誤解生みデザイン変更へ 在庫使い切る3か月後にリニューアル [muffin★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- 高市早苗「……なんて言ってみたw」中国「なんだ、言ってみただけかw」👈これで全部元通りになるという事実 [782460143]
- 【悲報】早速高市首相のせいで全国の民泊でキャンセルラッシュwwwwwwwwwwww 経営者も嘆き「こんな事は初めてだ…」😲 [871926377]
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- んなっしょい🍬禁止🈲のお🏡
- 映画「ゼルダの伝説」、リンクとゼルダ姫が白人になってしまう。日本のものは日本人だろうが!! [592058334]
- 高市早苗「株やってる奴ザマァwww格差是正のためにも、もっと暴落した方がいいよwww」(´・ω・`)確かに。 [252835186]
