[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/06 15:43 / Filesize : 269 KB / Number-of Response : 1047
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Perlについての質問箱 63箱目



1 名前:デフォルトの名無しさん [2014/02/19(水) 23:36:23.29 .net]
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板: kohada.2ch.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.18.2)

▼前スレ
Perlについての質問箱 61箱目
toro.2ch.net/test/read.cgi/tech/1381561905/
Perlについての質問箱 62箱目
toro.2ch.net/test/read.cgi/tech/1385039352/

601 名前:デフォルトの名無しさん [2017/01/22(日) 21:26:40.74 ID:xYSgWZ/D.net]
寄生できないmmoとか簡単そうだけどな

(1)死ぬたびに獲得経験値1/10
(2)3回死亡でダンジョンから強制排出&所持金半減&獲得経験値ゼロ
(3)経験値はパーティーメンバーの敵に与えたダメージ比率

(3)があれば身の丈に合ってないダンジョンの時点で経験値はほぼゼロ
ほぼゼロなところへ(1)があるから限りなくゼロに近くなる
寄生でダンジョンクリアだけしようにも(2)のハイリスクがある

602 名前:デフォルトの名無しさん [2017/01/24(火) 18:17:56.63 ID:wudREosA.net]
>>587
回復職やサポート職の経験値もなしということでしょうか。

603 名前:デフォルトの名無しさん mailto:sage [2017/01/24(火) 18:48:47.54 ID:tYWypKKw.net]
昔はこれでアラーにならなかったのですが、perl5.8でこれを実行すると @{$_[2]}が原因でこけてるらしいです。
どのように変えればよいでしょうか
my ( @WdayArr ) = ( $_[2] )? @{$_[2]} : ( 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' );

604 名前:デフォルトの名無しさん mailto:sage [2017/01/24(火) 22:39:27.02 ID:zqYaLnZ2.net]
>>589
# perldoc.perl.org/5.8.9/Scalar/Util.html
use Scalar::Util qw(reftype);

my @WdayArr = reftype($_[2]) eq 'ARRAY' ? @{$_[2]} : qw(Sun Mon Tue Wed Thu Fri Sat);

605 名前:デフォルトの名無しさん mailto:sage [2017/01/24(火) 23:38:20.96 ID:LKVAQWtm.net]
>>589
$_[2]には何が入ってんだよ

606 名前:デフォルトの名無しさん mailto:sage [2017/01/25(水) 08:15:46.34 ID:1MVxS70E.net]
>>590
ありがとうございます。やってみます。

>>591
曜日の文字を配列に指定する部分です。なければ、英語の曜日が入ります

607 名前:デフォルトの名無しさん mailto:sage [2017/01/25(水) 09:09:34.94 ID:WOhX0mTt.net]
違う、そうじゃない

608 名前:デフォルトの名無しさん mailto:sage [2017/01/25(水) 09:15:19.78 ID:dJNPI+cJ.net]
>>592
Perl 5.16.3 だが、下のスクリプトで1行目を入れても
消しても、きちんと動くぞ。
$_[2]に配列のリファレンス以外のものを入れたのだろう。
(エラーメッセージにそう書いてあるはずなんだが)
-----------------------------------------

$_[2] = [qw(a b c d e f g)];
my ( @WdayArr ) = ( $_[2] )? @{$_[2]} : ( 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' );
print @WdayArr;

609 名前:デフォルトの名無しさん [2017/01/25(水) 09:30:32.20 ID:1MVxS70E.net]
>>594
use strict;を指定すると参照ダメみたいなエラーが出るので
とりあえずuse strict;を外して応急処置しています。

参照渡しができなくなったんでしょうか



610 名前:デフォルトの名無しさん mailto:sage [2017/01/25(水) 10:03:41.94 ID:WOhX0mTt.net]
こういう時はエラーメッセージをそのまま貼るのが正解

611 名前:デフォルトの名無しさん [2017/01/25(水) 10:20:22.46 ID:1MVxS70E.net]
このようなエラーが
Can't use string ("ARRAY(0x10b0458)") as an ARRAY ref while "strict refs" in use at obj.cgi

612 名前:デフォルトの名無しさん mailto:sage [2017/01/25(水) 10:29:15.16 ID:WOhX0mTt.net]
ARRAY(0x10b0458) というのは配列リファレンスを文字列として評価した時に出てくる
関数の呼び出し元で配列をそのまま渡さずにダブルクォートで囲うなどして文字列化してしまっているのだろう

613 名前:デフォルトの名無しさん mailto:sage [2017/01/25(水) 10:31:24.85 ID:1MVxS70E.net]
ありがとうございます。関数の実行側のほうを確認します。

614 名前:デフォルトの名無しさん [2017/01/28(土) 20:27:36.04 ID:t13qO4X2.net]
Perlはマジで糞だな
リファレンスはリファレンスで同じじゃねーの?
バックスラッシュ付けたリファレンスでも種類によって違うとか意味不明

615 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 20:37:05.87 ID:7oV/H97Q.net]
・・・?

616 名前:デフォルトの名無しさん mailto:sage [2017/01/30(月) 08:35:21.14 ID:CkOT0sBx.net]
Cの共用体のようなことしなければ、
ある「型」のリファレンスは
その「型」のリファレンスのままでよい。
それ以外の使い方をすれば、「間違っている」として
エラーを吐いてくれるのが有難いではないか。

ただ、リストのリファレンスをハッシュの
リファレンスとして使いたい時(またはその逆)
がたまにあるが、それは可能にしてほしいと思う。

617 名前:デフォルトの名無しさん [2017/01/30(月) 15:21:11.69 ID:MjhEgZic.net]
# こういうのじゃいかんか?

my $ref_to_hash0 = +{ @{ $ref_to_array0 } };
my $ref_to_array1 = [ %{ $ref_to_hash1 } ];

618 名前:デフォルトの名無しさん mailto:sage [2017/01/30(月) 21:42:50.47 ID:kKFFvpaa.net]
>>603
無駄なものがあって読みづらい

my $ref_to_hash0 = { @$ref_to_array0 };
my $ref_to_array1 = [ %$ref_to_hash1 ];

何がしたいのかわからん。
キーと値が交互に出てくるものを
ハッシュかリストに変換したいのか?

619 名前:デフォルトの名無しさん mailto:sage [2017/01/30(月) 23:42:02.11 ID:XappdU+s.net]
my $ref_to_hash0 = { $ref_to_array0->@* };
my $ref_to_array1 = [ $ref_to_hash1->%* ];



620 名前:デフォルトの名無しさん mailto:sage [2017/01/31(火) 09:30:03.69 ID:t4jOK5r8F]
>>604
括弧を「無駄」な物とは、恐れ

621 名前:入る。

ベストプラクティス11.2 中括弧で囲まれた参照を読むべし。
[]
[ここ壊れてます]

622 名前:デフォルトの名無しさん [2017/02/04(土) 21:52:52.06 ID:rb4WR6H/.net]
Javaのクラス周りに慣れるとPerlのクラス周りは本当に不自由だと気付く

623 名前:デフォルトの名無しさん mailto:sage [2017/02/04(土) 22:07:55.97 ID:ydMztSgS.net]
比較例に出すのにJavaのクラスなんぞを持ち出すのもどうかと

624 名前:デフォルトの名無しさん [2017/02/06(月) 09:40:35.12 ID:ZiMti5cO.net]
xp 32bit

xp対応のアクティブパール(ActivePerl)がダウンロードできないです

旧バージョンはどこからダウンロードできますか?

625 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 12:24:16.94 ID:dMFd7Yq5.net]
>>609
active perl old version
でググると、色々出てくるぞ。
実際、どれが使えるのかは知らんが。

626 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 14:58:39.49 ID:q20moLVF.net]
$str = "LIST( '2016123456','2015123456','2017987654',…)

という$strがあった時に、シングルクオートに囲まれた部分だけを取り出して
@listに突っ込みたいんだけどどう書いたらいい?
splitの正規表現でいけるかと思ったけどどう書いていいかわからない。

627 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 16:15:55.36 ID:gLbpEFqIL]
>>611
my @list = ($str =~ /'([0-9]+)'/g);

628 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 19:57:05.35 ID:YzSDBsjI.net]
>>609
5.16なら間違いなく使えてる
5.18と5,20はファイル名に64intがくっついてて動くかどうかはわからない

629 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 20:08:36.65 ID:B4iHWGCu.net]
今activesite見てきたら、まあ流し読みしかしてないけど、古いバージョンは有料で提供してやるよって買いてあった



630 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 20:13:46.71 ID:B4iHWGCu.net]
Need Perl on production servers or access to Perl 5.6, 5.8, 5.10, 5.12, 5.14, 5.16, 5.18 or 5.20?
Learn more about ActivePerl Business Edition

--------------------------------------------------------------------------------------------------------------------------

Get the language version you need on the platform you want. The following versions are available for purchase with Business Edition+:

ActivePerl 5.8, 5.10, 5.12, 5.14, 5.16, 5.18, 5.20, 5.22, 5.24
ActivePython 2.5, 2.6, 2.7, 3.2, 3.3, 3.4, 3.5
ActiveTcl 8.4, 8.5, 8.6

631 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 20:41:32.21 ID:r2wSMn/A.net]
>>611
push @list, $1 while $str =~ /'([0-9]+)'/g;

632 名前:デフォルトの名無しさん [2017/02/06(月) 20:55:17.22 ID:oG8S/cPb.net]
>>611
$str = "LIST( '2016123456','2015123456','2017987654',…)

$str =~ s/LIST/@list=/;
eval($str);

でいいんじゃね?

633 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 23:15:15.61 ID:n09J3oc8.net]
eval 怖ひ

634 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 00:35:10.28 ID:S1oxUZhq.net]
>>616
> push @list, $1 while $str =~ /'([0-9]+)'/g;

惜しいね。それやるならこうだよ

@list = $str =~ /'([0-9]+)'/g;

635 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 08:04:04.27 ID:0+g59X+8.net]
>>619
読みやすさなら上の方が良くね?

新人に引き継ぐ時の事考えると

636 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 08:39:30.86 ID:5nFcePp/.net]
>>609
2014年にダウンロードした
ActivePerl-5.16.3.1604-MSWin32-x86-298023.msi
を持っている。

ただ、Active State が古いバージョンを有償でのみ提供
しているのに、勝手に古いバージョンをうpしていいものか解らん。
そのあたり、クリアにしたら、どこかにうpしてやってもいいが。

637 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 10:26:02.92 ID:NmaWW75y.net]
m//g の形式でグローバルマッチの意味がないように思うが

638 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 12:23:47.76 ID:5nFcePp/.net]
>>622
m//g をリストコンテキストで使うと、
全てのマッチ部分のリストが返され

639 名前:驕B []
[ここ壊れてます]



640 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 16:36:45.75 ID:pJfTbQRq.net]
あると高速化できるようなrecommendsだけどインストールされていないモジュールを一覧出来る方法を教えて下さい

641 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 17:46:12.43 ID:TrN1jB3j.net]
>>609
googleでググったらすぐに見つかったけど?
https://xray-engine.org/index.php?title=ActivePerl
(このサイトは開くとき継続しますかって警告が出たんで
 ルート証明の認証に問題があるかも知れない
 一応Java ScriptとActiveXの実行は切ってアクセスしたほうがいいだろう)
一応俺が使ってる(XP 32bit)
ActivePerl-5.20.3.2003-MSWin32-x86-64int-299574.msi
をダウンロードして保存していたファイルと比較してみたけど一致したから問題ないと思う
あと、5.22.1も試してPerlとしては動いたので
現行ダウンロードできる5.22.3も大丈夫じゃないかな?
(インストーラがexeに変わってるけど)
あと俺が使えると言った5.22.1を何故使ってないかと言うと
WSHから何故か正常に使えなかったので、使える5.20.3を使ってる

642 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 20:35:38.79 ID:k/sR8nQd.net]
https://amaten.com/
こんなサイトの情報をテキストか何かで取得したい
LWP::Simple とかでは取ってこれない
何を使うと一番簡単にできる?

643 名前:デフォルトの名無しさん mailto:sage [2017/02/07(火) 20:58:27.25 ID:NmaWW75y.net]
use IO::Socket;

644 名前:デフォルトの名無しさん mailto:sage [2017/02/08(水) 01:47:50.85 ID:lrXbOWPO.net]
>>609
XPで動くかは試してないけど、Strawberry Perlっていうのもあるよ
どうしてもActivePerlじゃないとだめなの?

645 名前:デフォルトの名無しさん mailto:sage [2017/02/09(木) 00:36:47.60 ID:MB7d2iTo.net]
おれ XP で Strawberry Perl つかってる
ActivePerl はモジュールの対応が遅いから乗り換えた

646 名前:デフォルトの名無しさん mailto:sage [2017/02/09(木) 00:50:56.06 ID:9TbyVJRb.net]
むしろなぜXPを使ってるのか知りたい

647 名前:デフォルトの名無しさん mailto:sage [2017/02/09(木) 01:09:37.56 ID:EjItGpsn.net]
>>625のところでActive Perlの古いのから最新まで全部ダウンロードできるじゃん
それで解決だろ

648 名前:デフォルトの名無しさん mailto:sage [2017/02/09(木) 12:20:55.28 ID:awPX9+44.net]
>>630
M$に金を払うのが嫌だからだろう。

649 名前:デフォルトの名無しさん mailto:sage [2017/02/09(木) 22:13:19.02 ID:CNUBJX7I.net]
>>632
それだけだったらLinuxやFreeBSDなどを使うって方法もあるだろ?

だからM$に金を払うのがいやだけど、MSのOSが好きという理由であるはずだ
もしくはMS以外のOSがクソだっていう可能性もあるけど



650 名前:デフォルトの名無しさん mailto:sage [2017/02/09(木) 22:22:13.62 ID:4ZcYgl3B.net]
>>626
perlはもう進化が止まってるので、あんまり新しいことは出来ない
自分で作るなら別だけど

rubyやpythonなら整ってる筈

651 名前:デフォルトの名無しさん mailto:sage [2017/02/09(木) 23:43:38.97 ID:NyKrJWYT.net]
進化が止まっている #とは

652 名前:デフォルトの名無しさん [2017/02/10(金) 07:05:20.49 ID:SVdyXXtN.net]
>>626
もう見てないだろうけど
HTML::TreeBuilder
HTTP::Daemon
LWP::UserAgent
WWW::Scripter
くらいでなんとかなると思うよ。簡単かどうかは知らんけど大体なんとかなってる。

653 名前:デフォルトの名無しさん [2017/02/10(金) 10:48:54.81 ID:tdAYPVUl.net]
最近はperlは余り聞かないな
中学生の時にはブームだったけど……。(何十年も前)

学校ではpython とかだと思う。C# java が主力?

とにかく、滅多に聞かないな

654 名前:デフォルトの名無しさん mailto:sage [2017/02/10(金) 15:05:42.76 ID:j8ygGIFR.net]
Perlを罵倒したい人は、こちらにどうぞ

Perlについての罵倒スレ 63箱目
echo.2ch.net/test/read.cgi/tech/1392639772/

655 名前:デフォルトの名無しさん mailto:sage [2017/02/10(金) 22:06:13.34 ID:+KYQgfiL.net]
Perlは全然進化しないからな
一年ちょっと前に6がでて音沙汰なし
7はいつ出るんだ?って状態

656 名前:デフォルトの名無しさん mailto:sage [2017/02/10(金) 22:29:17.89 ID:pJ/oSP18.net]
ナイスジョーク

657 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 09:59:05.70 ID:pXj4BwQB.net]
まともな学校はcだろ。

658 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 11:05:50.36 ID:ffoIlYEu.net]
実用性を重視するならJava一択

659 名前:デフォルトの名無しさん [2017/02/11(土) 14:50:19.58 ID:N4/UY6wx.net]
>>639
6出てたのか?
知らなかったわ



660 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 15:18:36.75 ID:p/3UeWk3.net]
>>642
> 実用性を重視するならJava一択
それって言語の実用性じゃなくて
人材的な意味での実用性だよな

つまりJavaは色んな所で使われてる言語だから
Javaできますって言っておけば採用されやすい。
自分が実用性がある人間になりたいならJava一択

661 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 15:23:34.94 ID:H7Znugc/.net]
いい加減スレチ

662 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 15:50:08.46 ID:ffoIlYEu.net]
言語なんかいくつ修得してもいいんだから、大人しくJava勉強しとけ

663 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 17:33:33.41 ID:tLczzgrK.net]
何がなんだか仕様に混乱するから3つまでしか習得出来ません
4つめ覚えるとなにかを忘れます

664 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 21:11:41.56 ID:y7nchZP8.net]
621
> むしろなぜXPを使ってるのか知りたい

動作確認だよ
XPと10で動くならVistaでも7でも8でもでも動く可能性が高いから
いちいち全OSを揃えて動作確認すると
シロウトの趣味でアプリケーション開発するには荷が重すぎる

665 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 22:46:04.81 ID:p/3UeWk3.net]
いちいち全OSで動作させたいと思う理由は何?

サポートが終了しているXPで動作する必要はないし
Vistaも2017年4月までだ。シェアから考えれば切り捨てても十分だし

7と10で動作確認すればいいじゃん

666 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 23:02:42.86 ID:ffoIlYEu.net]
XPはまだ結構現役で残ってるぞ

667 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 23:33:55.67 ID:p/3UeWk3.net]
俺の周りに見たことない

668 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 12:16:27.67 ID:vLa3XGqC.net]
俺の周りでは、いまだにNT3.5.1を使ってる取引先があるのだが。

669 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 18:59:46.87 ID:VKyPIbro.net]
用途を特定した専用マシンみたいなのは、特にOSを入れ替えずにずっと使うな
測定機器や実験機器の一部とか、何かの制御用とか

ただ、そんなマシンは新しいソフトを入れたりもしないから、
互換性とかどうでもいい世界だけど



670 名前:デフォルトの名無しさん mailto:sage [2017/02/17(金) 23:51:32.63 ID:QUNiBjhs.net]
以前こちらでお世話になった顔文字のど素人です。

$ perl -p -e 's/(..)/$1 /g;'
123456

12 34 56

恐縮ですが上記の逆(スペースの削除)をご指導願います。
00 06 fc 25 58 50 0a 00 54 92 31 03 49 46 88 d0 c6
    ↓
0006fc2558500a0054923103494688d0c6

よろしくお願いいたします _(_^_)_

671 名前:デフォルトの名無しさん [2017/02/18(土) 00:14:42.65 ID:eUOj9Lyv.net]
>>654
s/\s//g

672 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 00:53:08.66 ID:UURjaLCm.net]
>>654
死んだ方がいいレベル

673 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 00:58:30.39 ID:np+iCDRO.net]
とにかく学習しようという気がまったく見えないのが凄い

674 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 01:09:34.78 ID:oWVhdX8p.net]
普通1時間以内に学習を完了してそうなものを、10日以上経ってるぞ

675 名前:646 mailto:sage [2017/02/18(土) 08:59:07.57 ID:64GKa0+N.net]
>>655
ど素人に有難うございました。

676 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 21:00:13.31 ID:3ABB/Pla.net]


677 名前:セから土曜日に書いたと []
[ここ壊れてます]

678 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 10:31:20.73 ID:cj/RoW+L.net]
active perlで、長いファイル名のあるフォルダに対して readdir すると、
エラーになって止まるんだけど、どうやって回避すればいいんだ

エラーが返るとかじゃなくて実行自体が止まるので、とりあえず読んでみて、
とかが出来ない

679 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 10:39:23.76 ID:OmTNhTRr.net]
windowsのエラーじゃねぇの?
とりあえずevalすれば実行は止まらないと思うけど



680 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 08:34:03.50 ID:hOw/b7i/.net]
>>661
ひょっとして、ファイル名にユニコード文字が混じったりしてない?

681 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 08:44:24.40 ID:hOw/b7i/.net]
readdirのユニコード版なら、こうゆうモジュールもある。

search.cpan.org/~xaicron/Win32-Unicode-0.26/lib/Win32/Unicode/Dir.pm

682 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 18:47:01.31 ID:dx1g9tP+.net]
unicodeは入ってない
単に長いだけ

683 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 22:36:40.65 ID:8LXDZxYt.net]
Win32::LongPathは?

684 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 22:51:51.90 ID:dx1g9tP+.net]
それを使うと、既存のreaddir の挙動が変わるの?

685 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 23:21:59.22 ID:/TfvNrk0k]
最大パス長260バイト制限に引っかかってるなら、
Win32APIのW系(Unicode)を利用するモジュールを使えば、260文字までは行ける。

686 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 08:31:44.98 ID:ECHoSeWI.net]
>>667
「長い」って何文字なん?260文字以下だと問題ないはず。

687 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 18:54:26.71 ID:Gbg+HMKR.net]
それ以上あったので問題があった

688 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 08:44:35.66 ID:RfMjQxG+.net]
Windowsで260文字以上のファイル名を普通に作ろうとすると、
「ファイル名が長すぎる」とエラーが出るが、
ネットワークドライブを使うと、作れてしまうようだ。
ただ、それを実際に使おうとすると、ドツボに嵌るみたいだな。

689 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 21:51:27.16 ID:KTTjixcr.net]
ファイル名っていうか、パスを含めた長さな



690 名前:デフォルトの名無しさん mailto:sage [2017/03/05(日) 00:13:47.26 ID:hhHVIZUN.net]
@file = split(/\n/,`dir /s /b *.* 2>NUL`);
な。次スレのテンプレに追加するから。

691 名前:デフォルトの名無しさん mailto:sage [2017/03/05(日) 15:57:50.73 ID:des1Iukd.net]
forkするのOKなら何でもありじゃん

692 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 23:48:39.27 ID:0EPJtM8y.net]
シェルとカーネルを縦横無尽に使いこなすのがPerlプログラミングの醍醐味。

693 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 15:21:10.67 ID:lYcZyteE.net]
print 1+(2+3);
print (1+2)+3;

この二つの文の違いを使いこなすのが、Perlプログラミングの醍醐味。

694 名前:デフォルトの名無しさん mailto:sage [2017/03/14(火) 00:58:03.78 ID:mRCDOzFa.net]
awk 由来の 0+ ハックや "". ハックは常識として使いこなすのが、Perlプログラミングのたしなみ。

695 名前:デフォルトの名無しさん mailto:sage [2017/03/15(水) 23:38:07.63 ID:WjEGzhMP.net]
ハックと言ってる時点で使ってはダメなものだ

696 名前:デフォルトの名無しさん mailto:sage [2017/03/16(木) 00:17:10.27 ID:a1z6pXZc.net]
工夫できないなら何を使ってもダメ
sub to_s { $_[0].'' }
sub to_i { $_[0]+00 }

697 名前:デフォルトの名無しさん mailto:sage [2017/03/16(木) 06:54:07.57 ID:t2soddN5.net]
>awk 由来の 0+ ハックや "". ハックは
そもそも、常識でないといいたげな、このレスは何?
まともな参考本読めば、最初の方に書いてある。
ハックでもなんでもない

698 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 17:47:23.90 ID:5loIUxX7.net]
Win-7、Active Perl 5.16です。Unicode文字を含むperlの処理結果を
utf16leで出力しようとしています。下のようにやってみましたが、ダメでした。
出力をバイナリエディタでみると、改行コードが変な風にいじられていました。

binmode STDOUT =>

699 名前:":encoding(utf16le)";
print "ユニコード文字を含むテキスト\n";

色々試した結果、下のスクリプトのようにすると、概ね動くことが解り
ましたが、動かない場合もあります。下の例では、「aaaaa」は出力され
ますが、「bbbbb」は出力されません。どうするのが正しいでしょうか?

use utf8;
binmode STDOUT;
use Encode qw/ encode decode /;

sub wprint{
 foreach(@_){
  s/\n/\r\n/g;
  print encode('utf-16-le', $_);
 }
}
wprint "a"x5, "\n";
foreach (1..5){
 wprint "b";
}
wprint "\n";
[]
[ここ壊れてます]



700 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 19:53:29.20 ID:SJAmj6b4.net]
>改行コードが変な風にいじられていました
perlではどのOSでも改行をLF(\n, 0x0a)として扱っている
Windowsでは通常出力する際に自動的にLFをCRLFに変換している

0x0a (perlの\n)
0x0a 0x00 (utf16にエンコード)
0x0d 0x0a 0x00 (0x0a を 0x0d 0x0a に変換、正しくは 0x0d 0x00 0x0a 0x00 にしたい)

wprint関数のやり方が上手くいくのは
0x0a (perlの\n)
0x0d 0x0a (s/\n/\r\n/g で置換)
0x0d 0x00 0x0a 0x00 (utf16にエンコードし、自動変換も無効にしているのでこのまま出力される)


>「bbbbb」は出力されません
様々な事情で特殊変数 @_ の各要素やループ時に設定される一時変数 $_ は元の値の別名として扱われる
つまり同じ値を参照しているため、それらに代入や置換などを行うと元の値も変更されてしまう
元の値が変数ならそれが変更されるだけで問題はないが、定数の場合変更できないのでそこで死んでしまう

wprint関数では @_ でもループ内でも変数として受け取っていないため置換処理で引数の値を変更しようとしている
'a' x 5 は評価されたときに変数に入れられたように扱われるので問題はないが、直後の "\n" はまさしく定数なので変更できず死に、以降の処理が止まる
関数内で最初に my @args = @_; のように一度変数で受け取るのが意図しない変更を防ぐ意味でも良いだろう






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<269KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef