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箱目
レス数が1000を超えています。これ以上書き込みはできません。
2019/02/01(金) 09:44:37.18ID:1/Kr4Qjk
952デフォルトの名無しさん
2021/03/08(月) 10:17:22.69ID:SORPad+v 親にリンクしていてループするのが困るので、
全部の子に対してカウンタを持たせる、くらいしか回避方法が無いんだよな
それだと再帰でやってるうまみが無くなってしまう
全部の子に対してカウンタを持たせる、くらいしか回避方法が無いんだよな
それだと再帰でやってるうまみが無くなってしまう
953デフォルトの名無しさん
2021/03/08(月) 12:03:45.46ID:JySUELLY 素直にFile::Find使っとけ
954デフォルトの名無しさん
2021/03/08(月) 12:34:19.76ID:SORPad+v dir /s の結果を使うのが一番楽
955デフォルトの名無しさん
2021/03/08(月) 16:27:27.25ID:3P7OMB5d File::Findは処理速度が遅いのが難
956デフォルトの名無しさん
2021/03/08(月) 17:21:12.95ID:6lKYXbK2957デフォルトの名無しさん
2021/03/08(月) 17:24:47.95ID:6lKYXbK2958デフォルトの名無しさん
2021/03/08(月) 17:40:53.14ID:SORPad+v ディレクトリならどこかにある実体のコピーだろうから、リンクなんか無しで済むけど、
より一般化したリスト構造だったら辿らない訳にいかない
だから、事前にループしていないことを確認してから処理することになって、
そのテストがループにはまる
より一般化したリスト構造だったら辿らない訳にいかない
だから、事前にループしていないことを確認してから処理することになって、
そのテストがループにはまる
959デフォルトの名無しさん
2021/03/08(月) 20:06:16.14ID:3P7OMB5d >>957
試してみたが、no_chdirは関係ない。
File::Findは、dir /S /B コマンドのパイプ読み取りに比べて、3倍も時間がかかる。
File::Findは遅いだけでなくコールバックでユーザー変数を扱えない欠点があるから、私はFile::Findを使わない。
試してみたが、no_chdirは関係ない。
File::Findは、dir /S /B コマンドのパイプ読み取りに比べて、3倍も時間がかかる。
File::Findは遅いだけでなくコールバックでユーザー変数を扱えない欠点があるから、私はFile::Findを使わない。
960デフォルトの名無しさん
2021/03/08(月) 21:30:38.88ID:3P7OMB5d File::FindはUnix系OSで使う場合は find コマンドのパイプ読み取りと同等か少し速い。
File::Findが明確に遅いのはWindows向けにビルドされたPerlの場合のみ。
File::Findが明確に遅いのはWindows向けにビルドされたPerlの場合のみ。
961デフォルトの名無しさん
2021/03/08(月) 22:05:40.64ID:6lKYXbK2962デフォルトの名無しさん
2021/03/08(月) 22:39:10.09ID:3P7OMB5d >>961
残念ながらネイティブに最適化されているはずのActivePerl や Strawberry Perl でFile::Findが遅い。
原因は知らないけどWin32APIの使い方が良くないからだと思う。
残念ながらネイティブに最適化されているはずのActivePerl や Strawberry Perl でFile::Findが遅い。
原因は知らないけどWin32APIの使い方が良くないからだと思う。
963532
2021/03/09(火) 00:11:34.07ID:jxvXMO9/ $^WIN32_SLOPPY_STAT じゃね?
File::FindはWindowsだと、SJISで全角「構」などの2バイト目が\(0x5c)のフォルダに遭遇すると
無限loopしたり誤動作するから、結局Wndowsでフォルダ階層を再帰的にたどるには
utf8化したperl sourceで自分でopendir, readdirして、encode, decodeせにゃならん。
File::FindはWindowsだと、SJISで全角「構」などの2バイト目が\(0x5c)のフォルダに遭遇すると
無限loopしたり誤動作するから、結局Wndowsでフォルダ階層を再帰的にたどるには
utf8化したperl sourceで自分でopendir, readdirして、encode, decodeせにゃならん。
964532
2021/03/09(火) 00:15:08.81ID:jxvXMO9/ 別件だがWindowsではSJISで全角「構」などの2バイト目が\(0x5c)のフォルダには
perlからlstatやutimeが出来ないみたいで難儀した。
Linuxのutf8のファイルシステムと違ってWindowsのSJISファイルシステムは面倒
perlからlstatやutimeが出来ないみたいで難儀した。
Linuxのutf8のファイルシステムと違ってWindowsのSJISファイルシステムは面倒
965デフォルトの名無しさん
2021/03/09(火) 01:17:12.50ID:B0uPByTP966928
2021/03/09(火) 05:19:08.22ID:NUN2sKP0 >>925
Ruby で、元のファイルを、CSV へ変換してみた。
データ中に、ダブルクォーテーション・カンマを入れても、正常に動く
require 'csv'
line_number = 0 # 行番号
# 行末の改行を削除して、1行ずつ処理する。蓄積変数は2次元配列
results = File.foreach( "input.txt", chomp: true ).with_object( [ ] ) do |line, accm|
line_number += 1
accm.push [ ] if line_number % 3 == 1 # 3行毎に、空配列を追加する
ary = line.split( ':', 2 ) # 左からコロンで、2つに分割する
last = accm.last # 最後の要素 (配列)
last.push( ary[ 1 ] ) # コロンの右側を、配列に追加する
end
results.unshift %w(start end value) # 先頭に、ヘッダー行を追加する
# p results
csv_str = results.map( &:to_csv ).join # 2次元配列を、CSV 文字列に変換する
print csv_str
出力
start,end,value
a_1,"b""1",1
"a,2",b_2,2.34
Ruby で、元のファイルを、CSV へ変換してみた。
データ中に、ダブルクォーテーション・カンマを入れても、正常に動く
require 'csv'
line_number = 0 # 行番号
# 行末の改行を削除して、1行ずつ処理する。蓄積変数は2次元配列
results = File.foreach( "input.txt", chomp: true ).with_object( [ ] ) do |line, accm|
line_number += 1
accm.push [ ] if line_number % 3 == 1 # 3行毎に、空配列を追加する
ary = line.split( ':', 2 ) # 左からコロンで、2つに分割する
last = accm.last # 最後の要素 (配列)
last.push( ary[ 1 ] ) # コロンの右側を、配列に追加する
end
results.unshift %w(start end value) # 先頭に、ヘッダー行を追加する
# p results
csv_str = results.map( &:to_csv ).join # 2次元配列を、CSV 文字列に変換する
print csv_str
出力
start,end,value
a_1,"b""1",1
"a,2",b_2,2.34
967デフォルトの名無しさん
2021/03/09(火) 08:00:45.91ID:4CK4kuWA コマンドプロントはとっくにUTF-16対応している。出力フォントが表示に対応していないだけ。
コマンドプロントにはもう機能追加されないから Windows Terminalに乗り換えたほうがいい。
コマンドプロントにはもう機能追加されないから Windows Terminalに乗り換えたほうがいい。
968デフォルトの名無しさん
2021/03/09(火) 08:27:17.16ID:4CK4kuWA コマンドプロントは今でもすでに非システムコード文字(アラビア文字やハングルなど)をコマンドに引数渡しできる。
受け取る側のアプリがUTF-16形式で起動時の引数を取らなかったり、batファイルが非システムコード文字に対応していないだけ。
コマンドプロントの努力だけではどうしようもない。
なお、Windows向けビルドされたJavaやPerlは非システムコード文字を引数で受け取れない制約がある。
プログラム側で自力でbase64エンコード対応するなどして回避するしかない。
一方、Windows向けビルドされたPythonは非システムコード文字を引数で受け取ることができる。
Pythonのプラグインを作ったことある人なら分かると思うが、Pythonはインターフェース間の文字列のやりとりにUTF-16を使っている。
受け取る側のアプリがUTF-16形式で起動時の引数を取らなかったり、batファイルが非システムコード文字に対応していないだけ。
コマンドプロントの努力だけではどうしようもない。
なお、Windows向けビルドされたJavaやPerlは非システムコード文字を引数で受け取れない制約がある。
プログラム側で自力でbase64エンコード対応するなどして回避するしかない。
一方、Windows向けビルドされたPythonは非システムコード文字を引数で受け取ることができる。
Pythonのプラグインを作ったことある人なら分かると思うが、Pythonはインターフェース間の文字列のやりとりにUTF-16を使っている。
969デフォルトの名無しさん
2021/03/09(火) 08:33:53.42ID:HJK4uNxM UTF-16も嬉しくない
970532
2021/03/09(火) 08:45:38.83ID:UTQZC5u1 NTFSってUTF-16だったのか、
しかしperlのreaddirはcp932で返してきているような気がs…
しかしperlのreaddirはcp932で返してきているような気がs…
971デフォルトの名無しさん
2021/03/09(火) 09:28:02.71ID:HJK4uNxM NTFSはUCS-2で、windowsがUTF-16
それをわざわざcp932に変換して寄越す
それをわざわざcp932に変換して寄越す
972デフォルトの名無しさん
2021/03/09(火) 10:42:13.66ID:4CK4kuWA NTFSもUTF-16だと思うよ。
973デフォルトの名無しさん
2021/03/09(火) 10:44:51.95ID:SbXzcieK >>968
> コマンドプロントの努力だけではどうしようもない。
そらそうや。
ついにcp932から離れようとする世の方向性を受けて、Perlも変わるんじゃねえの、という話。
Perl7とかでそういう話は出てないんかな?
知らんけど。
> なお、Windows向けビルドされたJavaやPerlは非システムコード文字を引数で受け取れない制約がある。
制約つーか、むしろ互換維持とかただ昔のままほったらかしとかやろ。w
> コマンドプロントの努力だけではどうしようもない。
そらそうや。
ついにcp932から離れようとする世の方向性を受けて、Perlも変わるんじゃねえの、という話。
Perl7とかでそういう話は出てないんかな?
知らんけど。
> なお、Windows向けビルドされたJavaやPerlは非システムコード文字を引数で受け取れない制約がある。
制約つーか、むしろ互換維持とかただ昔のままほったらかしとかやろ。w
974デフォルトの名無しさん
2021/03/09(火) 10:56:11.55ID:SbXzcieK975デフォルトの名無しさん
2021/03/09(火) 12:55:12.46ID:NUN2sKP0 Windows 10 Home でも、Docker が出来るようになった。
ただし、Windowsの連続更新に、3時間も掛かったけど
WSL2, Ubuntu でも使えば?
漏れは、Ruby on Rails をやってる
Linux側には、日本人が作った、バージョンマネージャーのanyenv で、
rbenv, nodenv を使って、ruby 2.6.6, node 12.16.2 も入れた
Dockerでも良いし。
ただし、メモリ8GB じゃキツイ。16GB は欲しい
ただし、Windowsの連続更新に、3時間も掛かったけど
WSL2, Ubuntu でも使えば?
漏れは、Ruby on Rails をやってる
Linux側には、日本人が作った、バージョンマネージャーのanyenv で、
rbenv, nodenv を使って、ruby 2.6.6, node 12.16.2 も入れた
Dockerでも良いし。
ただし、メモリ8GB じゃキツイ。16GB は欲しい
976デフォルトの名無しさん
2021/03/09(火) 20:18:30.71ID:BijZjsz/ 正規表現のパターンの中に変数を書くとおかしくなりますが、どうしたらいいでしょうか。
やりたいこと:「hoge」の後ろがカンマか行末の場合を抽出したい
$pat = "hoge[,\$\]";
if( $str =~ m/$pat/ ){...}
こう書くと $pat が「hoge[,$]」になることはデバッガで確認できたのですが、思った通りのマッチになりません。マッチングの部分に $pat ではなく定数で「hoge[,$]」と書けばマッチングします。
どう書いたらいいでしょうか?
やりたいこと:「hoge」の後ろがカンマか行末の場合を抽出したい
$pat = "hoge[,\$\]";
if( $str =~ m/$pat/ ){...}
こう書くと $pat が「hoge[,$]」になることはデバッガで確認できたのですが、思った通りのマッチになりません。マッチングの部分に $pat ではなく定数で「hoge[,$]」と書けばマッチングします。
どう書いたらいいでしょうか?
977デフォルトの名無しさん
2021/03/09(火) 20:28:25.57ID:HJK4uNxM なんで ] だけエスケープしてるの?
978デフォルトの名無しさん
2021/03/09(火) 20:34:49.51ID:nUvu3sQ4 そういうときの為のqrですよ
979デフォルトの名無しさん
2021/03/09(火) 20:36:21.19ID:XI91xcQL []内は文字セットだからその$は行末マッチじゃないし
980976
2021/03/09(火) 22:41:12.95ID:BijZjsz/981デフォルトの名無しさん
2021/03/09(火) 22:43:46.86ID:HJK4uNxM {0,1}って?と等価だよね
982デフォルトの名無しさん
2021/03/09(火) 23:03:58.63ID:B0uPByTP983デフォルトの名無しさん
2021/03/10(水) 02:28:31.13ID:ixLG+AYE hoge(,|$)
やりたいのはコレじゃない?
やりたいのはコレじゃない?
984デフォルトの名無しさん
2021/03/10(水) 06:16:01.51ID:S+G6vYN6985976
2021/03/11(木) 11:15:21.72ID:VAAe2gi6 みなさん、こんなアホに付き合ってもらってありがとうございます。
疲れてたのかな、俺。
まだ試してませんが、教えていただいたやり方でチャレンジしてみます。
疲れてたのかな、俺。
まだ試してませんが、教えていただいたやり方でチャレンジしてみます。
986532
2021/03/11(木) 11:39:56.33ID:AlcqB+X5 $pat = 'hoge(?:,.*)?$';
print "1\n" if 'hoge,dsad' =~ $pat;
print "2\n" if 'hoge' =~ $pat;
print "3\n" if 'hage' =~ $pat;
はどうよ
実行例
~ $ perl 64_976_hoge_pat.pl
1
2
print "1\n" if 'hoge,dsad' =~ $pat;
print "2\n" if 'hoge' =~ $pat;
print "3\n" if 'hage' =~ $pat;
はどうよ
実行例
~ $ perl 64_976_hoge_pat.pl
1
2
987デフォルトの名無しさん
2021/03/11(木) 14:27:02.78ID:IdZJgmDv もしかして
¥bhoge¥b
がよかったんじゃないの?
¥bhoge¥b
がよかったんじゃないの?
988デフォルトの名無しさん
2021/03/11(木) 14:37:57.64ID:l5V9NIZG splitをうまく使うと解決したかも
989デフォルトの名無しさん
2021/03/20(土) 13:47:35.09ID:UD6ZNZG9 梅
990デフォルトの名無しさん
2021/03/20(土) 13:51:21.40ID:UD6ZNZG9 Python勉強中
print('梅')
exit()
print('梅')
exit()
991デフォルトの名無しさん
2021/03/20(土) 17:31:10.22ID:ql2G31oz 【モダン推奨】Perlについての質問箱 50箱目
https://mevius.5ch.net/test/read.cgi/tech/1327110999/
https://mevius.5ch.net/test/read.cgi/tech/1327110999/
992デフォルトの名無しさん
2021/03/21(日) 17:34:20.99ID:2t2VtxHB 夢
993デフォルトの名無しさん
2021/03/21(日) 17:36:32.63ID:dkvLNxnd 爪
994デフォルトの名無しさん
2021/03/21(日) 17:39:12.82ID:2t2VtxHB うぜ
995デフォルトの名無しさん
2021/03/21(日) 21:54:16.28ID:6DoINzzO 2年で消化 人気スレじゃねーか
996デフォルトの名無しさん
2021/03/22(月) 01:23:08.94ID:rCEIiEgY うめ
997デフォルトの名無しさん
2021/03/22(月) 23:39:18.97ID:rCEIiEgY ↑
998デフォルトの名無しさん
2021/03/22(月) 23:39:30.86ID:rCEIiEgY 上
999デフォルトの名無しさん
2021/03/22(月) 23:40:13.68ID:rCEIiEgY 質問いいですか?
1000デフォルトの名無しさん
2021/03/22(月) 23:41:34.32ID:rCEIiEgY おしまい
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 780日 13時間 56分 57秒
新しいスレッドを立ててください。
life time: 780日 13時間 56分 57秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 日本の立場説明へ…外務省局長が北京到着 “台湾有事”首相答弁に中国反発 ★4 [煮卵★]
- 橋下徹氏「この喧嘩は日本の完敗」 台湾有事答弁めぐる外務省局長訪中で指摘「中国に怒られてご説明に伺った日本と見られる」 [muffin★]
- 【日本大使館】中国在留邦人は安全確保を [ぐれ★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★10 [ぐれ★]
- 【高市速報】ユーロ円180円突破。史上初 [931948549]
- ネトウヨ、収監されてるお母様こと韓鶴子のことはもう忘れた模様 [343591364]
- 高市コイン、155円突破wwwwwwwwww [246620176]
- 杉浦綾乃板って改名したほうがいいよな
- 高市早苗の中国問題、「オーバーツーリズムが解消されてウザい中国人が消えるから日本の勝ち」という風潮になってしまう [562983582]
- おじゃる丸をまったり待機するスレ🏡
