CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板: https://medaka.5ch.net/php/)
このスレでは(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.28.1)
▼前スレ
Perlについての質問箱 61箱目
http://toro.5ch.net/test/read.cgi/tech/1381561905/
Perlについての質問箱 62箱目
http://toro.5ch.net/test/read.cgi/tech/1385039352/
Perlについての質問箱 63箱目
https://mevius.5ch.net/test/read.cgi/tech/1392820583/
探検
Perlについての質問箱 64箱目
レス数が900を超えています。1000を超えると表示できなくなるよ。
2019/02/01(金) 09:44:37.18ID:1/Kr4Qjk
837デフォルトの名無しさん
2020/12/09(水) 09:35:02.27ID:sn/SI4a+ >>833
こんな感じかな。デバッグはしていないが。
@newlist = sort compare @oldlist;
sub compare{
my ($ap, $bp) = @_;
($ap1, $ap2) = $ap=~/([0-9]+)\-([0-9]+)/;
($bp1, $bp2) = $bp=~/([0-9]+)\-([0-9]+)/;
return 1 if $ap1 > $bp1
return -1 if $ap1 < $bp1
# $ap1 == $bp1;
return 1 if $ap2 > $bp2;
return -1;
}
こんな感じかな。デバッグはしていないが。
@newlist = sort compare @oldlist;
sub compare{
my ($ap, $bp) = @_;
($ap1, $ap2) = $ap=~/([0-9]+)\-([0-9]+)/;
($bp1, $bp2) = $bp=~/([0-9]+)\-([0-9]+)/;
return 1 if $ap1 > $bp1
return -1 if $ap1 < $bp1
# $ap1 == $bp1;
return 1 if $ap2 > $bp2;
return -1;
}
838デフォルトの名無しさん
2020/12/09(水) 10:27:05.71ID:LWKBPFtb839デフォルトの名無しさん
2020/12/09(水) 10:46:35.52ID:zREBomTd sort { s1($a) <=> s1($b) } keys %x;
sub s1 {
shift =~ /(¥d+)-(¥d+)/ && 100*$1+$2
}
sortならこんなかんじ
sub s1 {
shift =~ /(¥d+)-(¥d+)/ && 100*$1+$2
}
sortならこんなかんじ
840デフォルトの名無しさん
2020/12/09(水) 10:47:56.70ID:UMU4oc+t 順番が変わるだけで処理量は変わらんでしょう
どっちにしろ重い
次にソートする時はソート対象が変わっているんだから、キャッシュできない
有効な局面もあるんだろうけど、今回に関してはトリッキーなだけでメリットがない
どっちにしろ重い
次にソートする時はソート対象が変わっているんだから、キャッシュできない
有効な局面もあるんだろうけど、今回に関してはトリッキーなだけでメリットがない
841デフォルトの名無しさん
2020/12/09(水) 10:51:05.82ID:UMU4oc+t 次のソートじゃなくて、1回のソート内部の複数の比較に対してか
あー、確かに速くなりそうな気がする
処理系が気を利かせて変わらない気もする
あー、確かに速くなりそうな気がする
処理系が気を利かせて変わらない気もする
842デフォルトの名無しさん
2020/12/09(水) 11:29:48.25ID:LWKBPFtb843デフォルトの名無しさん
2020/12/09(水) 12:58:19.84ID:UMU4oc+t 内部の話だからsayでは判らんだろ
関数で評価しないといけないと判っていて、動的に処理する必要も無いんだから、
評価済みのテーブルを内部に持たせようというのは自然な発想
関数で評価しないといけないと判っていて、動的に処理する必要も無いんだから、
評価済みのテーブルを内部に持たせようというのは自然な発想
844デフォルトの名無しさん
2020/12/09(水) 13:12:15.55ID:/81rDyGm845デフォルトの名無しさん
2020/12/09(水) 13:44:43.94ID:UMU4oc+t 判ってないのかな
処理速度に配慮した処理系があっても不思議ではないという話
手元で試して遅かったとしても、全ての処理系に対する証明にはならない
処理速度に配慮した処理系があっても不思議ではないという話
手元で試して遅かったとしても、全ての処理系に対する証明にはならない
846デフォルトの名無しさん
2020/12/09(水) 14:16:41.19ID:AA5LXV3h >>845
痛々しいからもうやめとけ
痛々しいからもうやめとけ
847デフォルトの名無しさん
2020/12/09(水) 14:32:22.15ID:LWKBPFtb >>845
Perlの「全ての処理系」て。w
Perlの「全ての処理系」て。w
848デフォルトの名無しさん
2020/12/09(水) 15:17:55.01ID:UMU4oc+t そもそも重いかどうかが疑問で、どっちでやっても一瞬で終わるのが普通
それなら読みやすい方が優れている
重くて困ってから対策を考えればいい
それなら読みやすい方が優れている
重くて困ってから対策を考えればいい
849デフォルトの名無しさん
2020/12/09(水) 16:44:07.55ID:qaSCdqDS map {
$_->[0];
} sort {
$a->[1] <=> $b->[1] || $a->[2] <=> $b->[2];
} map {
[$_, /(\d+)/g ];
}
読みにくい…かなあ?
$_->[0];
} sort {
$a->[1] <=> $b->[1] || $a->[2] <=> $b->[2];
} map {
[$_, /(\d+)/g ];
}
読みにくい…かなあ?
850デフォルトの名無しさん
2020/12/09(水) 17:06:18.35ID:8NKLSi5o >>849
他の言語の人が見たら発狂しそう
他の言語の人が見たら発狂しそう
851デフォルトの名無しさん
2020/12/09(水) 18:15:36.35ID:UMU4oc+t 別に短く書かなくていいんだよ
@r = sort s2 @a;
sub s1 {
my $str = shift;
$str =~ /(\d+)\-(\d+)/;
return $1 * 100 + $2;
}
sub s2 {
return s1($a) <=> s1($b);
}
@r = sort s2 @a;
sub s1 {
my $str = shift;
$str =~ /(\d+)\-(\d+)/;
return $1 * 100 + $2;
}
sub s2 {
return s1($a) <=> s1($b);
}
852デフォルトの名無しさん
2020/12/09(水) 18:16:58.18ID:xAMitlRd 発狂しない人が使えば良いよ
853デフォルトの名無しさん
2020/12/09(水) 19:43:12.41ID:LWKBPFtb854デフォルトの名無しさん
2020/12/09(水) 19:45:15.15ID:LWKBPFtb855デフォルトの名無しさん
2020/12/09(水) 22:17:09.12ID:rsuX7ND7 ハッシュテーブルにs1($val)の戻り値を保存して、そのハッシュテーブルを使って比較関数を呼び出すとかするのが普通でしょ。
856849
2020/12/10(木) 06:03:00.77ID:+FxPMgzN857デフォルトの名無しさん
2020/12/10(木) 16:08:39.86ID:smJEm1Fb 2桁前提なんだろうな
858デフォルトの名無しさん
2020/12/10(木) 19:59:40.99ID:g17Qy/zb859デフォルトの名無しさん
2020/12/11(金) 03:24:48.11ID:lklp228q 考え方は同じだけど最初からソート用の値をデータに持たせてみる。
my %x = (
'3-1' => ['e', 301],
'1-2' => ['b', 102],
.... ,
);
sort { $x{$a}[1] <=> $x{$b}[1] } keys %x;
my %x = (
'3-1' => ['e', 301],
'1-2' => ['b', 102],
.... ,
);
sort { $x{$a}[1] <=> $x{$b}[1] } keys %x;
860デフォルトの名無しさん
2020/12/11(金) 03:42:00.36ID:Hz2bdcAQ 複数キーでのソートに帰着させるべきなんだろうな
1-1-1 も許容する、とかになった瞬間に破綻する
1-1-1 も許容する、とかになった瞬間に破綻する
861デフォルトの名無しさん
2020/12/11(金) 04:01:52.35ID:Hz2bdcAQ sub s1 {
my @a = split /\-/, $a;
my @b = split /\-/, $b;
my $dim = @a > @b ? @a : @b;
for my $i (0 .. $dim) {
my $cmp = $a[$i] <=> $b[$i];
return $cmp if $cmp;
}
return 0;
}
my @a = split /\-/, $a;
my @b = split /\-/, $b;
my $dim = @a > @b ? @a : @b;
for my $i (0 .. $dim) {
my $cmp = $a[$i] <=> $b[$i];
return $cmp if $cmp;
}
return 0;
}
862856
2020/12/11(金) 06:10:31.03ID:LwDR4/oY >> 833 には数値の値域については何も書かれてないんだから
勝手に想定しない方がいいと想うよ。
どうしても比較を簡略化したいなら pack 関数で数値を全部
ビッグエンディアンで並べればいいんじゃないかな。
勝手に想定しない方がいいと想うよ。
どうしても比較を簡略化したいなら pack 関数で数値を全部
ビッグエンディアンで並べればいいんじゃないかな。
863デフォルトの名無しさん
2020/12/11(金) 10:41:01.46ID:vQm1aiEb864デフォルトの名無しさん
2020/12/11(金) 10:50:54.59ID:vQm1aiEb865デフォルトの名無しさん
2020/12/11(金) 11:20:18.13ID:Hz2bdcAQ 1-1があるなら1-1-1もあると予測するのは自然な拡張
1-1-1-... に無限に対応できるように作っておいて、
その特殊ケースとして要件を満たす、で十分
アルファベットにも対応するのは次元が違う
1-1-1-... に無限に対応できるように作っておいて、
その特殊ケースとして要件を満たす、で十分
アルファベットにも対応するのは次元が違う
866デフォルトの名無しさん
2020/12/11(金) 19:40:49.33ID:V1LdBVWq867デフォルトの名無しさん
2020/12/11(金) 20:46:31.45ID:vQm1aiEb868デフォルトの名無しさん
2020/12/11(金) 21:01:49.19ID:jm3zE7RU 普段は過疎ってるのに少し書き込みがあるとクソ雑魚が湧いてきてグズグズ文句たれる
頭の中どうなってんだろうな
頭の中どうなってんだろうな
869デフォルトの名無しさん
2020/12/11(金) 22:34:31.89ID:Hz2bdcAQ んでんでんで
870デフォルトの名無しさん
2020/12/11(金) 22:41:46.66ID:pFqzegRi >>837 だが、実は、このコードは、オレが実際に、数字とかアルファベットとかが
複雑に絡んだ文字列を、ある規則に従ってソートするために作ったものを
流用したんだ。だから、応用範囲が広いという点では、これがいいと思うけどな。
複雑に絡んだ文字列を、ある規則に従ってソートするために作ったものを
流用したんだ。だから、応用範囲が広いという点では、これがいいと思うけどな。
871デフォルトの名無しさん
2020/12/11(金) 22:48:30.39ID:Hz2bdcAQ sortの関数って@_で受けれるの?
872デフォルトの名無しさん
2020/12/11(金) 23:30:45.59ID:vQm1aiEb873デフォルトの名無しさん
2020/12/11(金) 23:38:00.26ID:Hz2bdcAQ どう見ても章のタイトルとかそんなんなので、1000も無いよ
高速化の工夫は遅くて困ってから
高速化の工夫は遅くて困ってから
874532
2020/12/12(土) 00:28:14.42ID:tTwN9OuS >>833
perlのsort()アルゴリズムは5,8以降マージソートになってsort結果は安定なアルゴリズムなので
手短にコードを書くなら右の数字でsortしてから左の数字でsortすれば所望の結果が得られる。以下サンプル実装
use List::Util 'shuffle';
%h = map{$_ => $i++} shuffle qw{1-1 1-2 1-3 2-1 2-2 2-3 3-1 3-2 3-3};
use feature qw{say signatures}; no warnings experimental;
@k1 = keys %h;
say "@k1";
sub f($s) { [$s =~ /(\d+)/g, $s]};
@k2 = map{$$_[2]} sort{$a->[0] <=> $b->[0]} sort{$a->[1] <=> $b->[1]} map{f $_} @k1;
say "@k2";
実行結果
~ $ perl 64_833_n-n_sort_1.pl
1-1 2-3 3-3 1-2 3-1 2-2 2-1 1-3 3-2
1-1 1-2 1-3 2-1 2-2 2-3 3-1 3-2 3-3
言語処理系内部のsort()関数のアルゴリズムに依存しない書き方がしたいなら
左と右の数値で二段階のソートをするか、右の数字と左の数値で順位に一貫性のあるキーを作って
一段階のソートで済ませる方法もあると思う。
そういったサンプル実装を見たいのであれば、時間があればくけれども…
perlのsort()アルゴリズムは5,8以降マージソートになってsort結果は安定なアルゴリズムなので
手短にコードを書くなら右の数字でsortしてから左の数字でsortすれば所望の結果が得られる。以下サンプル実装
use List::Util 'shuffle';
%h = map{$_ => $i++} shuffle qw{1-1 1-2 1-3 2-1 2-2 2-3 3-1 3-2 3-3};
use feature qw{say signatures}; no warnings experimental;
@k1 = keys %h;
say "@k1";
sub f($s) { [$s =~ /(\d+)/g, $s]};
@k2 = map{$$_[2]} sort{$a->[0] <=> $b->[0]} sort{$a->[1] <=> $b->[1]} map{f $_} @k1;
say "@k2";
実行結果
~ $ perl 64_833_n-n_sort_1.pl
1-1 2-3 3-3 1-2 3-1 2-2 2-1 1-3 3-2
1-1 1-2 1-3 2-1 2-2 2-3 3-1 3-2 3-3
言語処理系内部のsort()関数のアルゴリズムに依存しない書き方がしたいなら
左と右の数値で二段階のソートをするか、右の数字と左の数値で順位に一貫性のあるキーを作って
一段階のソートで済ませる方法もあると思う。
そういったサンプル実装を見たいのであれば、時間があればくけれども…
875532
2020/12/12(土) 00:42:28.87ID:tTwN9OuS つか、実は Tie::IxHash を使ってhashに登録したデータの順番を維持して取り出せれば
いいだけの話だったりしてな。しらんけど
いいだけの話だったりしてな。しらんけど
876デフォルトの名無しさん
2020/12/12(土) 00:47:36.64ID:iq4I9JA8 >>867
アホだなあ
アホだなあ
878デフォルトの名無しさん
2020/12/12(土) 01:06:54.59ID:4UtPcEnB >>876
Perlでバッファオーバーランを実装する方法を教えてください。w
Perlでバッファオーバーランを実装する方法を教えてください。w
879デフォルトの名無しさん
2020/12/12(土) 02:31:23.48ID:gfhxsiY6 バッファオーバーランつまり out of range なんてすぐ起こせるでしょ。
880デフォルトの名無しさん
2020/12/12(土) 03:38:37.71ID:4UtPcEnB881862
2020/12/12(土) 09:07:56.06ID:K38oRjDr pack に誰も食いついてこないのはちょっと寂しいな。
正しくやれば C でさえ 1 回の memcmp で比較が済むのだが。
ましてや、Perl の pack/unpack は Perl4 の時代からある超便利関数なのだが。
まあ、「ひょっとして比較をシンプルにしたいのかな?」と思ったから書いただけだし
今回のニーズには合ってても万能というわけではないし
自分が良いと思う方法でやればいいと思うよ。
正しくやれば C でさえ 1 回の memcmp で比較が済むのだが。
ましてや、Perl の pack/unpack は Perl4 の時代からある超便利関数なのだが。
まあ、「ひょっとして比較をシンプルにしたいのかな?」と思ったから書いただけだし
今回のニーズには合ってても万能というわけではないし
自分が良いと思う方法でやればいいと思うよ。
882デフォルトの名無しさん
2020/12/12(土) 09:26:02.24ID:kEr/Zqiv 数1つあたりのbit数が決められないがな
何とかしてmap使いたいから無理筋言ってるだけとしか
何とかしてmap使いたいから無理筋言ってるだけとしか
883532
2020/12/12(土) 10:42:34.69ID:+ekv//0b >>833 >>874に書いた左の数字と右の数値両方で順位に一貫性のあるキーを作って一回でsortするサンプル
数値は4桁以下であることを仮定してます。
use List::Util 'shuffle';
%h = map{$_ => $i++} shuffle qw{1-1 1-2 1-3 2-1 2-2 2-3 3-1 3-2 3-3};
@k1 = keys %h;
print "@k1\n";
@kk = map{[sprintf("%4d%4d", /(\d+)/g), $_]} @k1;
@k2 = map{$$_[1]} sort{$$a[0] cmp $$b[0]} @kk;
print "@k2\n";
数値は4桁以下であることを仮定してます。
use List::Util 'shuffle';
%h = map{$_ => $i++} shuffle qw{1-1 1-2 1-3 2-1 2-2 2-3 3-1 3-2 3-3};
@k1 = keys %h;
print "@k1\n";
@kk = map{[sprintf("%4d%4d", /(\d+)/g), $_]} @k1;
@k2 = map{$$_[1]} sort{$$a[0] cmp $$b[0]} @kk;
print "@k2\n";
885デフォルトの名無しさん
2020/12/12(土) 13:20:14.94ID:4UtPcEnB >>881
慣れたヤツには最適解過ぎ、慣れてないヤツには意義がわからん、ということで、そんなに食いつきようがないやろ。w
慣れたヤツには最適解過ぎ、慣れてないヤツには意義がわからん、ということで、そんなに食いつきようがないやろ。w
886デフォルトの名無しさん
2020/12/16(水) 23:33:00.22ID:qMOR0fCG >>833
もしそれが桁数固定で、例えばその例のように一桁の数、ハイフン、一桁の数という文字列ならば、何も考えずにそのまま文字列として比較して sort すればいい。つまりただ sort するだけ。
もしそれが桁数固定で、例えばその例のように一桁の数、ハイフン、一桁の数という文字列ならば、何も考えずにそのまま文字列として比較して sort すればいい。つまりただ sort するだけ。
887デフォルトの名無しさん
2020/12/17(木) 05:05:50.95ID:fz9fvgi4 そんなもんは9で終わる訳がなくて10も100もある筈、と自然に拡張して考える
それと同様に、枝番号ならサブサブセクション以降もある筈、という拡張は
自然なのに、そっちには思い至らないんだよな
それと同様に、枝番号ならサブサブセクション以降もある筈、という拡張は
自然なのに、そっちには思い至らないんだよな
888デフォルトの名無しさん
2020/12/17(木) 09:44:28.00ID:RUflbAwb889デフォルトの名無しさん
2020/12/18(金) 08:38:15.55ID:1Xc4Ax1A 「数値でソートしたい」って最初から書いてあるだろ……
890デフォルトの名無しさん
2020/12/18(金) 08:53:35.39ID:lJHaaS7Y 今だけはいいけどすぐに駄目になりそうな設計を、
裏技見つけたみたいにやりたがる奴がいるんだよな
ユーザは予想を超えた無茶をしてくるものなのに
裏技見つけたみたいにやりたがる奴がいるんだよな
ユーザは予想を超えた無茶をしてくるものなのに
891デフォルトの名無しさん
2020/12/18(金) 09:55:06.92ID:Kz3E+lfW Keep It Simple, Stupid
892デフォルトの名無しさん
2020/12/18(金) 09:58:16.29ID:lJHaaS7Y よい設計というのは自然とシンプルになるものなんだよ
893849
2020/12/18(金) 16:30:11.78ID:1Xc4Ax1A sub Schwalts {
@tmp = @_;
@tmp = map { [$_, /(\d+)/g ] } @tmp;
@tmp = sort { $a->[1] <=> $b->[1] || $a->[2] <=> $b->[2] } @tmp;
( map { $_->[0] } @tmp);
}
を短く書いたのがシュワルツ変換だよ
くらいの説明はした方がいいのかな。
@tmp = @_;
@tmp = map { [$_, /(\d+)/g ] } @tmp;
@tmp = sort { $a->[1] <=> $b->[1] || $a->[2] <=> $b->[2] } @tmp;
( map { $_->[0] } @tmp);
}
を短く書いたのがシュワルツ変換だよ
くらいの説明はした方がいいのかな。
894デフォルトの名無しさん
2020/12/18(金) 21:33:33.71ID:rUPjISbN まだやってんのかw
895デフォルトの名無しさん
2020/12/22(火) 10:15:20.24ID:YhckWNJa 最近raku触ってるけど面白すぎるわこれ、識別子をパース?して組み合わせるの楽しい
もうこれ半分lispだろ
もうこれ半分lispだろ
896デフォルトの名無しさん
2020/12/22(火) 12:14:37.88ID:/kVuwMjM 演算子の前後に空白が必須なの、なんかイヤじゃない?
ツメツメで書きたいのに。
Perl6のころだけど、オレが降りた理由のひとつ。
ツメツメで書きたいのに。
Perl6のころだけど、オレが降りた理由のひとつ。
897デフォルトの名無しさん
2020/12/22(火) 16:09:49.34ID:Rxnt3reZ898デフォルトの名無しさん
2020/12/22(火) 16:21:28.35ID:Mi4b/BA1 言語なんて、他の言語のいいとこ取りで進化していくからな
常に便利になった部分と実験的な部分がある
常に便利になった部分と実験的な部分がある
899デフォルトの名無しさん
2020/12/27(日) 18:10:18.92ID:pJIjrBUp ローカルで一番最初にperlの呼び出しの部分は#!c:/Perl/bin/perl.exeって書くけど
サーバーに上げるときは毎回#!/user/local/perlというように書き直すのがめんどうだけど
#!/user/local.perlのまんまでもローカルで動かす方法ありますか?
サーバーに上げるときは毎回#!/user/local/perlというように書き直すのがめんどうだけど
#!/user/local.perlのまんまでもローカルで動かす方法ありますか?
900デフォルトの名無しさん
2020/12/27(日) 19:39:12.76ID:CEWAcbKQ あれ?
/usr/local/perlのままでもいけるんじゃないの?
Windowsはそこのパスを見てなかったような。
/usr/local/perlのままでもいけるんじゃないの?
Windowsはそこのパスを見てなかったような。
901デフォルトの名無しさん
2020/12/27(日) 19:46:23.03ID:/HQdSjMP Apacheは見てる
そんでApacheのあるドライブにuser/localのフォルダ作ってperl.exeをコピーしたら動くよ
そんでApacheのあるドライブにuser/localのフォルダ作ってperl.exeをコピーしたら動くよ
902デフォルトの名無しさん
2020/12/27(日) 21:30:33.15ID:CEWAcbKQ そうだっけか?
ちなみに、もしそのファイルに拡張子があるならレジストリで指定する方法もある。
「windows apache レジストリ 拡張子」で検索!
ちなみに、もしそのファイルに拡張子があるならレジストリで指定する方法もある。
「windows apache レジストリ 拡張子」で検索!
903デフォルトの名無しさん
2020/12/28(月) 00:11:42.69ID:oUNoRxKm perlプログラム中に指定するルートパスについてだけど
open(IN,"/test.html");
my @lines = <IN>;
print "@lines";
close(IN);
とやっても@linesは空で何も取得できなかったけど
print "<a href=\"/test.html\">リンク</a>";
でリンクをクリックするとちゃんとドキュメントルート直下のtest.htmlに飛べる
これはどうしてか?
test.htmlの中身は空ではない
open(IN,"/test.html");
my @lines = <IN>;
print "@lines";
close(IN);
とやっても@linesは空で何も取得できなかったけど
print "<a href=\"/test.html\">リンク</a>";
でリンクをクリックするとちゃんとドキュメントルート直下のtest.htmlに飛べる
これはどうしてか?
test.htmlの中身は空ではない
904デフォルトの名無しさん
2020/12/28(月) 00:28:09.86ID:AD+30T3D905デフォルトの名無しさん
2020/12/28(月) 08:24:52.02ID:oUNoRxKm906デフォルトの名無しさん
2020/12/28(月) 08:37:46.11ID:9b76uWwh ドキュンルート
907デフォルトの名無しさん
2020/12/28(月) 21:50:36.57ID:gLlPtDZl908デフォルトの名無しさん
2020/12/30(水) 20:09:27.64ID:ygO1FIcm 過疎ってる方が落ち着くという人もいるらしい
909デフォルトの名無しさん
2020/12/30(水) 20:26:20.53ID:ZDzqqnZf 初心者が嫌いな「上級者」で過疎っているほうが落ち着くなら、このスレがいいな。
【Perl上級者コーナーPart01】
https://medaka.5ch.net/test/read.cgi/php/1024741312/
【Perl上級者コーナーPart01】
https://medaka.5ch.net/test/read.cgi/php/1024741312/
910デフォルトの名無しさん
2020/12/30(水) 21:55:58.30ID:Fpo/gio8911デフォルトの名無しさん
2021/01/03(日) 17:25:22.42ID:Lv3VCxJc ブラウザのクッキーを許可してるかどうかを調べるにはどうしたらいいんですか?
クッキーを書き込めたら許可されているというやり方だと
書き込んだ直後はクッキー読み取れない
更新ボタンでページを更新しないとクッキー読み取れないので他のやり方で
クッキーを書き込めたら許可されているというやり方だと
書き込んだ直後はクッキー読み取れない
更新ボタンでページを更新しないとクッキー読み取れないので他のやり方で
912デフォルトの名無しさん
2021/01/03(日) 17:33:27.51ID:qCTYrijY お、今年初めの質問だね。
君の悩みは質問箱住人が解決するよ。
ささ、甘酒どぞ。つ甘
みんなーお客さんだよー。
君の悩みは質問箱住人が解決するよ。
ささ、甘酒どぞ。つ甘
みんなーお客さんだよー。
913デフォルトの名無しさん
2021/01/03(日) 19:13:07.92ID:fvS6UGyp >>911
javascript併用したくないならHTTPヘッダで
print "Set-Cookie: hoge\n";
print "Location: hage\\n\n";
みたいな感じでクッキー書いてリダイレクトすればいいんじゃね
javascript併用したくないならHTTPヘッダで
print "Set-Cookie: hoge\n";
print "Location: hage\\n\n";
みたいな感じでクッキー書いてリダイレクトすればいいんじゃね
914デフォルトの名無しさん
2021/01/03(日) 20:53:05.77ID:Lv3VCxJc >>913
なるほど、でもそれ無限ループにならないっすか?
なるほど、でもそれ無限ループにならないっすか?
915デフォルトの名無しさん
2021/01/03(日) 21:41:10.96ID:Y2yZ564Q916デフォルトの名無しさん
2021/01/03(日) 21:44:24.27ID:fvS6UGyp >>914
クエリパラメータ追加するなり工夫すれ
クエリパラメータ追加するなり工夫すれ
917532
2021/01/25(月) 02:03:08.62ID:NGykvctj ttps://perlcodesample.hateblo.jp/entry/2020/07/10/082720
918デフォルトの名無しさん
2021/02/13(土) 20:39:32.56ID:puXqs/bZ U+10000からU+1FFFFまでの文字があったら置換したい時はどう書けばいい?
919デフォルトの名無しさん
2021/02/13(土) 20:57:13.59ID:aGYlIUX0920デフォルトの名無しさん
2021/02/13(土) 21:54:38.37ID:puXqs/bZ あー
U+10000という文字列を置換したいのではなく、それが示すサロゲートペアを置換したい
U+10000という文字列を置換したいのではなく、それが示すサロゲートペアを置換したい
921デフォルトの名無しさん
2021/02/14(日) 01:36:58.65ID:u5RUQBwf >>920
s/([¥x{10000}-¥x{1ffff}])/unpack(q{U},$1)/eg
かな?
ダメな気もするが。
つーか、さっきのURLにいろいろ書いてあるから、一度目を通して自分で試してみろ。
んで、うまくいったら、結果を貼るようにな。
s/([¥x{10000}-¥x{1ffff}])/unpack(q{U},$1)/eg
かな?
ダメな気もするが。
つーか、さっきのURLにいろいろ書いてあるから、一度目を通して自分で試してみろ。
んで、うまくいったら、結果を貼るようにな。
922デフォルトの名無しさん
2021/02/14(日) 07:32:21.90ID:kRUK3Bbl $line =~ s/\x{1f306}/置/g;
これは成功する
$line =~ s/\x{1....}/置/g;
こんなことをやろうとしてた
$line =~ s/[\x{10000}-\x{1ffff}]/置/g;
これが正解だった
これは成功する
$line =~ s/\x{1....}/置/g;
こんなことをやろうとしてた
$line =~ s/[\x{10000}-\x{1ffff}]/置/g;
これが正解だった
923デフォルトの名無しさん
2021/02/14(日) 10:00:12.81ID:yrV2Bu9C Perlの場合、マルチバイト文字で正規表現を正しく使うには、あらかじめEncode::decode()でデコードしておく必要があるので厄介。
924デフォルトの名無しさん
2021/02/14(日) 11:18:28.10ID:u5RUQBwf925デフォルトの名無しさん
2021/03/03(水) 18:48:52.48ID:Q9ky3RP3 start:aaa1
end:bbb1
value:1.23
start:aaa2
end:bbb2
value:2.34
…
データとして上記のようなstart,end,value値が違うデータがだらっと繰り返ししてるファイルがあって
下記の正規表現で名前付きキャプチャを使って繰り返しマッチングし%+ハッシュを配列に格納したいのですが、こんな感じでやるとそれぞれのデータが順に入ってしまいます。
どう書けばマッチングした各ハッシュを配列に格納出来るのでしょうか?
$re=qr|start:(?<start>\S+).*?end(?<end>\S+).*?value:(?<value>\S+)$|sm;
my @data = m|$re|g =~ $txt;
end:bbb1
value:1.23
start:aaa2
end:bbb2
value:2.34
…
データとして上記のようなstart,end,value値が違うデータがだらっと繰り返ししてるファイルがあって
下記の正規表現で名前付きキャプチャを使って繰り返しマッチングし%+ハッシュを配列に格納したいのですが、こんな感じでやるとそれぞれのデータが順に入ってしまいます。
どう書けばマッチングした各ハッシュを配列に格納出来るのでしょうか?
$re=qr|start:(?<start>\S+).*?end(?<end>\S+).*?value:(?<value>\S+)$|sm;
my @data = m|$re|g =~ $txt;
926デフォルトの名無しさん
2021/03/03(水) 20:20:14.74ID:DgitZS9x 正規表現を使うところではない気がするな。w
ちょっとおちついて、行単位で処理していけよ。
ちょっとおちついて、行単位で処理していけよ。
927デフォルトの名無しさん
2021/03/03(水) 23:36:11.18ID:Q9ky3RP3928デフォルトの名無しさん
2021/03/04(木) 00:03:04.76ID:ls8aTj6l Ruby なら、
line_num = 0 # 行番号
# 行末の改行を削除して、1行ずつ処理する
results = File.foreach( "test154_data.txt", chomp: true ).with_object( [ ] ) do |line, accm|
line_num += 1
# 3行毎に、ハッシュを作って、蓄積変数に追加する
accm.push Hash.new if line_num % 3 == 1
ary = line.split( ':', 2 ) # 左からコロンで、2つに分割する
hash = accm.last # 最後の要素
hash[ ary[ 0 ] ] = ary[ 1 ]
end
p results
出力
[{"start"=>"aaa1", "end"=>"bbb1", "value"=>"1.23"},
{"start"=>"aaa2", "end"=>"bbb2", "value"=>"2.34"}]
line_num = 0 # 行番号
# 行末の改行を削除して、1行ずつ処理する
results = File.foreach( "test154_data.txt", chomp: true ).with_object( [ ] ) do |line, accm|
line_num += 1
# 3行毎に、ハッシュを作って、蓄積変数に追加する
accm.push Hash.new if line_num % 3 == 1
ary = line.split( ':', 2 ) # 左からコロンで、2つに分割する
hash = accm.last # 最後の要素
hash[ ary[ 0 ] ] = ary[ 1 ]
end
p results
出力
[{"start"=>"aaa1", "end"=>"bbb1", "value"=>"1.23"},
{"start"=>"aaa2", "end"=>"bbb2", "value"=>"2.34"}]
929デフォルトの名無しさん
2021/03/04(木) 00:11:02.54ID:Pkas/NOZ >>927
可不可の話なら、while (m/start..end/g) {...}みたいにしたらきっとできる。
しかし、オレならやらん。
Pythonは詳しくないが、たぶんそれでもやらんやろなあ。
正規表現の使いどころとしては非効率的だし、エラー対応が非現実的だし。
また、対象はファイルの内容だそうだが、ReDoSは知ってるか?
可不可の話なら、while (m/start..end/g) {...}みたいにしたらきっとできる。
しかし、オレならやらん。
Pythonは詳しくないが、たぶんそれでもやらんやろなあ。
正規表現の使いどころとしては非効率的だし、エラー対応が非現実的だし。
また、対象はファイルの内容だそうだが、ReDoSは知ってるか?
930デフォルトの名無しさん
2021/03/04(木) 00:24:13.90ID:u/riWi2o なんで急にRubyが出てくるんだよ(呆れ
931デフォルトの名無しさん
2021/03/04(木) 00:42:19.66ID:2AXWpxTy perlリスペクト公言言語だから敬意を評してるんじゃないかな、大目に見てあげよう
932デフォルトの名無しさん
2021/03/04(木) 09:09:52.94ID:8OZ033Zi 元がファイルだからなあ
1行ずつ分かれてるものを合体させてまた分離する、というのが無意味に見える
正規表現は柔軟性なので、使わなくていいくらいかっちりしてるものには
使わない方が安全側に倒れる
元ファイルが手書きで、無駄な改行やコメントが入ってるなら正規表現
1行ずつ分かれてるものを合体させてまた分離する、というのが無意味に見える
正規表現は柔軟性なので、使わなくていいくらいかっちりしてるものには
使わない方が安全側に倒れる
元ファイルが手書きで、無駄な改行やコメントが入ってるなら正規表現
933デフォルトの名無しさん
2021/03/07(日) 10:07:03.25ID:Anqe+9Rf forkがハングする。
見えてる範囲だと、memoryの使用量が関係してかもしれないです。
firefoxを使って1G程度メモリを食わせてからスクリプト走らせると、forkが返ってこなくなる。
この時のメモリ使用量は他も併せて25%程度。閉じてから再度走らせるとちゃんと動く。
エラー値返してくれたら助かるのだけど、ハングなんで困ってます。
アドバイスいただけるとたすかります。
Strawberry perl 64bit 5.32.1
Windows10Pro 64bit version 2004
Corei3-4370, Memory 12G
見えてる範囲だと、memoryの使用量が関係してかもしれないです。
firefoxを使って1G程度メモリを食わせてからスクリプト走らせると、forkが返ってこなくなる。
この時のメモリ使用量は他も併せて25%程度。閉じてから再度走らせるとちゃんと動く。
エラー値返してくれたら助かるのだけど、ハングなんで困ってます。
アドバイスいただけるとたすかります。
Strawberry perl 64bit 5.32.1
Windows10Pro 64bit version 2004
Corei3-4370, Memory 12G
934デフォルトの名無しさん
2021/03/07(日) 10:45:56.10ID:Q92Mc+WL 安定して動かないならバグっている
だいたい動くけど、ごく稀に動作がおかしい、ということがforkはある
forkがコケても動くような仕組みにすればok
だいたい動くけど、ごく稀に動作がおかしい、ということがforkはある
forkがコケても動くような仕組みにすればok
935デフォルトの名無しさん
2021/03/07(日) 10:50:58.30ID:x9JK9zFw そもそもWindows APIはfork()をサポートしてない。
936デフォルトの名無しさん
2021/03/07(日) 11:48:43.53ID:Anqe+9Rf >>934 ありがとう。
メモリ使用量が低いと成功。
firefoxでもタブ1枚ぐらいなら成功。
firefoxでタブ(yahoo.com)10枚開くと、確実にハング。
ラクダ本にも、失敗(戻り値undef)の対処法が書いてありますね。
WindowsOSがらみなので、イロイロありそうなのは察します。
でも、forkを呼び出したらハングして帰ってこないからなぁ。
コケるというよりは、forkを呼び出さない:
if( $can_fork ) {fork;}
ってな書き方が必要になってしまう。
メモリ使用量が低いと成功。
firefoxでもタブ1枚ぐらいなら成功。
firefoxでタブ(yahoo.com)10枚開くと、確実にハング。
ラクダ本にも、失敗(戻り値undef)の対処法が書いてありますね。
WindowsOSがらみなので、イロイロありそうなのは察します。
でも、forkを呼び出したらハングして帰ってこないからなぁ。
コケるというよりは、forkを呼び出さない:
if( $can_fork ) {fork;}
ってな書き方が必要になってしまう。
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 【日本大使館】中国在留邦人は安全確保を [ぐれ★]
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★10 [ぐれ★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 【朗報】愛国烈士ほんこん、高市首相のために長文を投稿wwwwwwwwwwwww [834922174]
- ニートしかいない時間ってマジでつまんないよな
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 千速は誰とのカップリングがエロいのか
- 高市コイン、155円突破wwwwwwwwww [246620176]
- おじゃる丸をまったり待機するスレ🏡
