Perlについての質問箱 63箱目 at TECH
[2ch|▼Menu]
[前50を表示]
550:デフォルトの名無しさん
16/12/19 18:32:42.82 RxkoIqKm.net
スマホかどうか判別するには
if(
$ENV{'HTTP_USER_AGENT'} =~ /iPhone/ ||
$ENV{'HTTP_USER_AGENT'} =~ /iPad/ ||
$ENV{'HTTP_USER_AGENT'} =~ /iPod/ ||
$ENV{'HTTP_USER_AGENT''} =~ /Android/
){
print "スマホだよ";
}
これでいいんですか?

551:デフォルトの名無しさん
16/12/19 21:42:52.71 BI+h437s.net
push,popは一般的なCPU命令のpush.popと同じだね。スタック末尾に積んだり取り出したり。
shift,unshiftは直感的とは言いがたいけど、まあ覚えるしかない

552:デフォルトの名無しさん
16/12/19 23:41:08.79 iJGCCAlx.net
対にして使うならば、push-pop、ないしpush-shift、unshiftはいったん忘れたほうがいい

553:デフォルトの名無しさん
16/12/19 23:58:59.01 qsdLnaaR.net
>>537,539-540
ありがとうございます。
pushは何とかそれで覚えられそうです。
何とかpush-shiftで覚えてみます。
>>535
レスしたいだけのゴミクズはさっさと消えろ。
まともに回答もできないクセに自己顕示欲だけは人一倍。
お前みたいな奴が社会のお荷物なんだよ。
お荷物=捨てるに捨てられないゴミ、だからな。
本当はさっさと処分したほうが社会のためだが憲法と法律によって処分できないだけ。

554:デフォルトの名無しさん
16/12/20 01:30:38.17 vON4ZTDa.net
>>541
自己紹介乙
簡単なことも覚えられない記憶障害者か?それとも統合失調症か?

555:デフォルトの名無しさん
16/12/20 01:58:29.63 quKQ7lis.net
一行レスにこれだけの長文で応えるのは愛があるからだと思うの

556:デフォルトの名無しさん
16/12/20 02:47:43.15 sHqfd7is.net
無理のある例えだが、配列がロケット鉛筆だとしたら
<0[1][2][3]
ケツに押し込むのが push
<0[1][2][3] ← [4]
ケツから飛び出ちゃうのが pop
<0[1][2] → [3]
芯を引っこ抜くのが shift
<0 ← <0[1][2]
先から無理矢理突っ込んじゃうのが unshift
→ <0[1][2][3][4]

557:デフォルトの名無しさん
16/12/20 03:25:48.63 Wy6+Up2x.net
まあどうせすぐ忘れるだろ
結局は染み付くまで調べるのを繰り返すしかない

558:デフォルトの名無しさん
16/12/20 04:26:14.23 VxeGortQ.net
>>541
いやいや、毎回調べるのも十分ありだと思うぞ。
俺はそのうちになんとなく覚えちゃったことけっこうあるよ。

559:デフォルトの名無しさん
16/12/20 05:58:50.42 Wy6+Up2x.net
うろ覚えで使うとバグの発見に苦しむんで
ほんのちょっとでも不安を覚える感じがしたら大丈夫だとは思ってても
必ず調べる方が良いよね

560:デフォルトの名無しさん
16/12/20 14:29:43.74 GHwwkOBP.net
俺も毎回調べてることは色々ある
同じことを100回調べた疑いすらある

561:デフォルトの名無しさん
16/12/20 18:25:40.76 JPbALvOm.net
そんなこと言ってるとまた精神障害者の>>542に記憶障害とか言われるぞw

562:デフォルトの名無しさん
16/12/21 00:24:41.66 nmy+aY6o.net
毎日のように使ってりゃそりゃ忘れることは無いだろうけど
数ヵ月とか間を空けると忘れてて調べなおすことはままある
記憶障害って言われるのはちょっときつい

563:デフォルトの名無しさん
16/12/21 00:30:32.60 lo


564:5qcp8D.net



565:デフォルトの名無しさん
16/12/21 09:29:14.01 Xe+zsvfF.net
覚えにくいことは自分で一覧表を作ると良い
C#の宣言一覧とか目につく所にファイルしてある

566:デフォルトの名無しさん
16/12/23 10:11:56.10 jV2urUkG.net
shiftは考えてみたけど、底の抜けた箱に物が詰まってて、箱自体を上にシフトすると一番下の物がまろび出てくるってイメージかな

567:デフォルトの名無しさん
16/12/24 05:45:04.23 NChqVw6n.net
干草プッシュだけ覚えときゃなんとかなる気がするが、ロケットペンシル記憶術も捨てがたい

568:デフォルトの名無しさん
17/01/01 16:43:08.52 YnMirTCR.net
配列のスライスとリストのスライスは微妙に仕様が違うんだな。最近まで気づかなかったよ。

569:デフォルトの名無しさん
17/01/04 00:26:26.84 9INFfbdp.net
モジュールのインストールすらできないPerlはマジでゴミ
膨大な依存関係を調べて手作業でインストールすればできないことはないのかもしれないが、
そんな暇があるのはニートくらいだろ
ゴミニート専用言語Perl

570:デフォルトの名無しさん
17/01/04 01:41:34.64 9INFfbdp.net
>>829
今ケツの穴が痛くてそれどころじゃない

571:デフォルトの名無しさん
17/01/04 01:41:41.45 9INFfbdp.net
>>829
今ケツの穴が痛くてそれどころじゃない

572:デフォルトの名無しさん
17/01/04 02:01:46.64 Z6+Vp8du.net
菊初めか
お大事に

573:デフォルトの名無しさん
17/01/04 06:53:29.45 Em4GHsJE.net
今ケツの穴が痛くてモジュールのインストールができない
・・・まで読んだ

574:デフォルトの名無しさん
17/01/06 01:50:49.12 0ickO96c.net
HTTP::Liteモジュール使うのと、ソケットでガチアクセスするのと、systemでwgetを実行するのではどれが一番速いですか?

575:デフォルトの名無しさん
17/01/07 02:02:58.42 lcjjTGwJ.net
HTTP::Liteは余計な処理がある分遅い、wgetはネイティブだがforkする分遅い。よってsocketかな

576:555
17/01/07 04:12:05.32 8FKpQ8GY.net
>>562
ありがとうございます。
それではソケットでガチアクセスします。

577:デフォルトの名無しさん
17/01/09 03:46:03.29 Ba0Z9f3i.net
ネトゲで寄生してくる香具師まじでウザい
レベルも装備も明らかに足りてないくせにパーティー入ってくるんじゃねーよ
前半はやる気を見せるためか最前線で敵に突っ込んでいって何度も即死
蘇生スキル持ちの職がいるとはいえMPも有限だし、死ぬと分かってるのに突っ込んで手間かけさせるな
後半は後ろからついてくるだけ
パーティーの人数によって敵の強さが変わるから、攻撃も回復もしない寄生虫一匹分、敵が強くなってるんだよ
まじでお荷物なんだが

578:デフォルトの名無しさん
17/01/09 03:57:16.67 Ba0Z9f3i.net
そういう糞雑魚がパーティーに入れない(入ったとしてもデメリットが大きい)MMORPG作りたいんだけど、
PerlでMMOサーバー作れる?
そうした寄生のできないちゃんとしたMMORPGを作りたい

579:デフォルトの名無しさん
17/01/09 04:02:21.88 09YuDyyp.net
君には無理

580:デフォルトの名無しさん
17/01/09 06:19:53.73 Ba0Z9f3i.net
誰とは質問言わないが、明後日の方向向いたレスしてる知的障がい者がいるな
Perlで作れるかどうかという質問なんだがな
Perl使ってると日本語すら理解できなくなるのか、それとももともと日本語を理解できない朝鮮人が紛れ込んでいるのか

581:デフォルトの名無しさん
17/01/09 06:23:50.50 09YuDyyp.net
どっちにしろ君には無理

582:デフォルトの名無しさん
17/01/09 08:24:01.83 Ba0Z9f3i.net
自分にできないものだから、それをこじらせて
自分以外の人間全員できないと思うようになったのか
ここまでくると哀れだな

583:デフォルトの名無しさん
17/01/10 05:46:20.71 JXAVAbFC.net
ID:Ba0Z9f3i
俺もこいつには無理って意見に全面的に賛成する


584:。 そもそもPerlで作るって発想が馬鹿。



585:デフォルトの名無しさん
17/01/10 08:17:16.04 lvul3mgx.net
それ以前にそもそもPerlなんてゴミを使おうと思う時点で馬鹿。
使い物にならない時代遅れの言語が候補に出てくる時点でプログラマとして致命的。

586:デフォルトの名無しさん
17/01/11 01:38:41.68 cSn92SSs.net
サーバーサイドをPerlで作ってるところはそこそこあるだろう

587:デフォルトの名無しさん
17/01/11 02:22:42.88 TF26KoMK.net
mmoでか?
インタプリタを?

588:デフォルトの名無しさん
17/01/11 18:54:09.92 FfNyKWnK.net
だから君には無理だって
perlでmmoサーバ作れないどころか想像すらできないみたいだし

589:デフォルトの名無しさん
17/01/11 18:59:46.49 9Pm7248G.net
俺は作れるかどうかを疑問視してるんでは無いと思うんだがな
>インタプリタを?
これをどういう風な意味に受け取ってるのかだろう

590:デフォルトの名無しさん
17/01/11 19:22:57.19 TF26KoMK.net
言語としてはPerlはチューリング完全を満たしています
最初に調べることだと思われますが

591:デフォルトの名無しさん
17/01/12 16:15:10.55 5aplhP3Q.net
mmoサーバも作れないゴミ乙
言語がゴミなのか、perl厨がゴミなのか、それとも両方か

592:デフォルトの名無しさん
17/01/12 18:08:05.48 taUnzxu5.net
     (´・ω・`)
   /     `ヽ.   お薬増やしておきますねー
  __/  ┃)) __i |
/ ヽ,,⌒)___(,,ノ\

     (´・ω・) チラッ
   /     `ヽ.   
  __/  ┃  __i |
/ ヽ,,⌒)___(,,ノ\

     (´・ω・`)
   /     `ヽ.   今度カウンセリングも受けましょうねー
  __/  ┃)) __i |
/ ヽ,,⌒)___(,,ノ\

593:デフォルトの名無しさん
17/01/13 01:30:45.41 84sZuYo8.net
オンラインゲームを支える技術、中嶋謙互、2011、技術評論社
サーバの構築・運営、通信量など、
オンラインゲームのほぼ全工程を、説明した本です
大人数用MMOと少人数用P2Pの、両方について書いてある
確か言語は、C++ だったかな?

594:デフォルトの名無しさん
17/01/13 11:59:30.05 lAI6bANo.net
そらそうだろ、Perlなんて電子産廃なんだからC系とかPHPになるだろうよ。
Perlで何かを作ろうってほうがおかしい。

595:デフォルトの名無しさん
17/01/13 16:26:16.86 w9nZHjQ8.net
PHPに代えたって意味無いじゃん
同様の理由でPythonも却下

596:デフォルトの名無しさん
17/01/13 17:31:55.77 knj8G1ZF.net
下らないことにはレス率が増えるこのレベルの低さよ

597:デフォルトの名無しさん
17/01/14 01:50:24.44 dLK6O0iv.net
ウザいゴミ

598:デフォルトの名無しさん
17/01/16 14:17:17.64 pfhmv7nO.net
>>579
大規模なオンラインゲームだと
むしろJavaを使うんじゃないかな?
人集めしやすいし

599:デフォルトの名無しさん
17/01/16 18:16:40.64 dzrBWFk0.net
そんな重いことまずしない

600:デフォルトの名無しさん
17/01/21 22:44:51.61 axnp1ig/.net
>>565
おれなら作れる

601:デフォルトの名無しさん
17/01/22 21:26:40.74 xYSgWZ/D.net
寄生できないmmoとか簡単そうだけどな
(1)死ぬたびに獲得経験値1/10
(2)3回死亡でダンジョンから強制排出&所持金半減&獲得経験値ゼロ
(3)経験値はパーティーメンバーの敵に与えたダメージ比率
(3)があれば身の丈に合ってないダンジョンの時点で経験値はほぼゼロ
ほぼゼロなところへ(1)があるから限りなくゼロに近くなる
寄生でダンジョンクリアだけしようにも(2)のハイリスクがある

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

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

604:デフォルトの名無しさん
17/01/24 22:39:27.02 zqYaLnZ2.net
>>589
# URLリンク(perldoc.perl.org)
use Scalar::Util qw(reftype);
my @WdayArr = reftype($_[2]) eq 'ARRAY' ? @{$_[2]} : qw(Sun Mon Tue Wed Thu Fri Sat);

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

606:デフォルトの名無しさん
17/01/25 08:15:46.34 1MVxS70E.net
>>590
ありがとうございます。やってみます。
>>591
曜日の文字を配列に指定する部分です。なければ、英語の曜日が入ります

607:デフォルトの名無しさん
17/01/25 09:09:34.94 WOhX0mTt.net
違う、そうじゃない

608:デフォルトの名無しさん
17/01/25 09:15:19.78 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:デフォルトの名無しさん
17/01/25 09:30:32.20 1MVxS70E.net
>>594
use strict;を指定すると参照ダメみたいなエラーが出るので
とりあえずuse strict;を外して応急処置しています。
参照渡しができなくなったんでしょうか

610:デフォルトの名無しさん
17/01/25 10:03:41.94 WOhX0mTt.net
こういう時はエラーメッセージをそのまま貼るのが正解

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

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

613:デフォルトの名無しさん
17/01/25 10:31:24.85 1MVxS70E.net
ありがとうございます。関数の実行側のほうを確認します。

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

615:デフォルトの名無しさん
17/01/28 20:37:05.87 7oV/H97Q.net
・・・?

616:デフォルトの名無しさん
17/01/30 08:35:21.14 CkOT0sBx.net
Cの共用体のようなことしなければ、
ある「型」のリファレンスは
その「型」のリファレンスのままでよい。
それ以外の使い方をすれば、「間違っている」として
エラーを吐いてくれるのが有難いではないか。
ただ、リストのリファレンスをハッシュの
リファレンスとして使いたい時(またはその逆)
がたまにあるが、それは可能にしてほしいと思う。

617:デフォルトの名無しさん
17/01/30 15:21:11.69 MjhEgZic.net
# こういうのじゃいかんか?
my $ref_to_hash0 = +{ @{ $ref_to_array0 } };
my $ref_to_array1 = [ %{ $ref_to_hash1 } ];

618:デフォルトの名無しさん
17/01/30 21:42:50.47 kKFFvpaa.net
>>603
無駄なものがあって読みづらい
my $ref_to_hash0 = { @$ref_to_array0 };
my $ref_to_array1 = [ %$ref_to_hash1 ];
何がしたいのかわからん。
キーと値が交互に出てくるものを
ハッシュかリストに変換したいのか?

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

620:デフォルトの名無しさん
17/01/31 09:30:03.69 t4jOK5r8F
>>604
括弧を「無駄」な物とは、恐れ


621:入る。ベストプラクティス11.2 中括弧で囲まれた参照を読むべし。



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

623:デフォルトの名無しさん
17/02/04 22:07:55.97 ydMztSgS.net
比較例に出すのにJavaのクラスなんぞを持ち出すのもどうかと

624:デフォルトの名無しさん
17/02/06 09:40:35.12 ZiMti5cO.net
xp 32bit
xp対応のアクティブパール(ActivePerl)がダウンロードできないです
旧バージョンはどこからダウンロードできますか?

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

626:デフォルトの名無しさん
17/02/06 14:58:39.49 q20moLVF.net
$str = "LIST( '2016123456','2015123456','2017987654',…)
という$strがあった時に、シングルクオートに囲まれた部分だけを取り出して
@listに突っ込みたいんだけどどう書いたらいい?
splitの正規表現でいけるかと思ったけどどう書いていいかわからない。

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

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

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

630:デフォルトの名無しさん
17/02/06 20:13:46.71 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:デフォルトの名無しさん
17/02/06 20:41:32.21 r2wSMn/A.net
>>611
push @list, $1 while $str =~ /'([0-9]+)'/g;

632:デフォルトの名無しさん
17/02/06 20:55:17.22 oG8S/cPb.net
>>611
$str = "LIST( '2016123456','2015123456','2017987654',…)
$str =~ s/LIST/@list=/;
eval($str);
でいいんじゃね?

633:デフォルトの名無しさん
17/02/06 23:15:15.61 n09J3oc8.net
eval 怖ひ

634:デフォルトの名無しさん
17/02/07 00:35:10.28 S1oxUZhq.net
>>616
> push @list, $1 while $str =~ /'([0-9]+)'/g;
惜しいね。それやるならこうだよ
@list = $str =~ /'([0-9]+)'/g;

635:デフォルトの名無しさん
17/02/07 08:04:04.27 0+g59X+8.net
>>619
読みやすさなら上の方が良くね?
新人に引き継ぐ時の事考えると

636:デフォルトの名無しさん
17/02/07 08:39:30.86 5nFcePp/.net
>>609
2014年にダウンロードした
ActivePerl-5.16.3.1604-MSWin32-x86-298023.msi
を持っている。
ただ、Active State が古いバージョンを有償でのみ提供
しているのに、勝手に古いバージョンをうpしていいものか解らん。
そのあたり、クリアにしたら、どこかにうpしてやってもいいが。

637:デフォルトの名無しさん
17/02/07 10:26:02.92 NmaWW75y.net
m//g の形式でグローバルマッチの意味がないように思うが

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


639:驕B



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

641:デフォルトの名無しさん
17/02/07 17:46:12.43 TrN1jB3j.net
>>609
googleでググったらすぐに見つかったけど?
URLリンク(xray-engine.org)
(このサイトは開くとき継続しますかって警告が出たんで
 ルート証明の認証に問題があるかも知れない
 一応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:デフォルトの名無しさん
17/02/07 20:35:38.79 k/sR8nQd.net
URLリンク(amaten.com)
こんなサイトの情報をテキストか何かで取得したい
LWP::Simple とかでは取ってこれない
何を使うと一番簡単にできる?

643:デフォルトの名無しさん
17/02/07 20:58:27.25 NmaWW75y.net
use IO::Socket;

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

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

646:デフォルトの名無しさん
17/02/09 00:50:56.06 9TbyVJRb.net
むしろなぜXPを使ってるのか知りたい

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

648:デフォルトの名無しさん
17/02/09 12:20:55.28 awPX9+44.net
>>630
M$に金を払うのが嫌だからだろう。

649:デフォルトの名無しさん
17/02/09 22:13:19.02 CNUBJX7I.net
>>632
それだけだったらLinuxやFreeBSDなどを使うって方法もあるだろ?
だからM$に金を払うのがいやだけど、MSのOSが好きという理由であるはずだ
もしくはMS以外のOSがクソだっていう可能性もあるけど

650:デフォルトの名無しさん
17/02/09 22:22:13.62 4ZcYgl3B.net
>>626
perlはもう進化が止まってるので、あんまり新しいことは出来ない
自分で作るなら別だけど
rubyやpythonなら整ってる筈

651:デフォルトの名無しさん
17/02/09 23:43:38.97 NyKrJWYT.net
進化が止まっている #とは

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

653:デフォルトの名無しさん
17/02/10 10:48:54.81 tdAYPVUl.net
最近はperlは余り聞かないな
中学生の時にはブームだったけど……。(何十年も前)
学校ではpython とかだと思う。C# java が主力?
とにかく、滅多に聞かないな

654:デフォルトの名無しさん
17/02/10 15:05:42.76 j8ygGIFR.net
Perlを罵倒したい人は、こちらにどうぞ
Perlについての罵倒スレ 63箱目
スレリンク(tech板)

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

656:デフォルトの名無しさん
17/02/10 22:29:17.89 pJ/oSP18.net
ナイスジョーク

657:デフォルトの名無しさん
17/02/11 09:59:05.70 pXj4BwQB.net
まともな学校はcだろ。

658:デフォルトの名無しさん
17/02/11 11:05:50.36 ffoIlYEu.net
実用性を重視するならJava一択

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

660:デフォルトの名無しさん
17/02/11 15:18:36.75 p/3UeWk3.net
>>642
> 実用性を重視するならJava一択
それって言語の実用性じゃなくて
人材的な意味での実用性だよな
つまりJavaは色んな所で使われてる言語だから
Javaできますって言っておけば採用されやすい。
自分が実用性がある人間になりたいならJava一択

661:デフォルトの名無しさん
17/02/11 15:23:34.94 H7Znugc/.net
いい加減スレチ

662:デフォルトの名無しさん
17/02/11 15:50:08.46 ffoIlYEu.net
言語なんかいくつ修得してもいいんだから、大人しくJava勉強しとけ

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

664:デフォルトの名無しさん
17/02/11 21:11:41.56 y7nchZP8.net
621
> むしろなぜXPを使ってるのか知りたい
動作確認だよ
XPと10で動くならVistaでも7でも8でもでも動く可能性が高いから
いちいち全OSを揃えて動作確認すると
シロウトの趣味でアプリケーション開発するには荷が重すぎる

665:デフォルトの名無しさん
17/02/11 22:46:04.81 p/3UeWk3.net
いちいち全OSで動作させたいと思う理由は何?
サポートが終了しているXPで動作する必要はないし
Vistaも2017年4月までだ。シェアから考えれば切り捨てても十分だし
7と10で動作確認すればいいじゃん

666:デフォルトの名無しさん
17/02/11 23:02:42.86 ffoIlYEu.net
XPはまだ結構現役で残ってるぞ

667:デフォルトの名無しさん
17/02/11 23:33:55.67 p/3UeWk3.net
俺の周りに見たことない

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

669:デフォルトの名無しさん
17/02/13 18:59:46.87 VKyPIbro.net
用途を特定した専用マシンみたいなのは、特にOSを入れ替えずにずっと使うな
測定機器や実験機器の一部とか、何かの制御用とか
ただ、そんなマシンは新しいソフトを入れたりもしないから、
互換性とかどうでもいい世界だけど

670:デフォルトの名無しさん
17/02/17 23:51:32.63 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:デフォルトの名無しさん
17/02/18 00:14:42.65 eUOj9Lyv.net
>>654
s/\s//g

672:デフォルトの名無しさん
17/02/18 00:53:08.66 UURjaLCm.net
>>654
死んだ方がいいレベル

673:デフォルトの名無しさん
17/02/18 00:58:30.39 np+iCDRO.net
とにかく学習しようという気がまったく見えないのが凄い

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

675:646
17/02/18 08:59:07.57 64GKa0+N.net
>>655
ど素人に有難うございました。

676:デフォルトの名無しさん
17/02/18 21:00:13.31 3ABB/Pla.net



677:セから土曜日に書いたと



678:デフォルトの名無しさん
17/02/26 10:31:20.73 cj/RoW+L.net
active perlで、長いファイル名のあるフォルダに対して readdir すると、
エラーになって止まるんだけど、どうやって回避すればいいんだ
エラーが返るとかじゃなくて実行自体が止まるので、とりあえず読んでみて、
とかが出来ない

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

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

681:デフォルトの名無しさん
17/02/27 08:44:24.40 hOw/b7i/.net
readdirのユニコード版なら、こうゆうモジュールもある。
URLリンク(search.cpan.org)

682:デフォルトの名無しさん
17/02/27 18:47:01.31 dx1g9tP+.net
unicodeは入ってない
単に長いだけ

683:デフォルトの名無しさん
17/02/27 22:36:40.65 8LXDZxYt.net
Win32::LongPathは?

684:デフォルトの名無しさん
17/02/27 22:51:51.90 dx1g9tP+.net
それを使うと、既存のreaddir の挙動が変わるの?

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

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

687:デフォルトの名無しさん
17/02/28 18:54:26.71 Gbg+HMKR.net
それ以上あったので問題があった

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

689:デフォルトの名無しさん
17/03/01 21:51:27.16 KTTjixcr.net
ファイル名っていうか、パスを含めた長さな

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

691:デフォルトの名無しさん
17/03/05 15:57:50.73 des1Iukd.net
forkするのOKなら何でもありじゃん

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

693:デフォルトの名無しさん
17/03/09 15:21:10.67 lYcZyteE.net
print 1+(2+3);
print (1+2)+3;
この二つの文の違いを使いこなすのが、Perlプログラミングの醍醐味。

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

695:デフォルトの名無しさん
17/03/15 23:38:07.63 WjEGzhMP.net
ハックと言ってる時点で使ってはダメなものだ

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

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

698:デフォルトの名無しさん
17/03/20 17:47:23.90 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:デフォルトの名無しさん
17/03/20 19:53:29.20 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 = @_; のように一度変数で受け取るのが意図しない変更を防ぐ意味でも良いだろう

701:デフォルトの名無しさん
17/03/21 08:41:14.27 RAznfVax.net
>>682
672です。
よく解りました。
ありがとうございました。

702:デフォルトの名無しさん
17/03/31 19:10:56.36 I7SB2jha.net
print (1+2)+(4+5)+6+7;
3

703:デフォルトの名無しさん
17/03/31 21:37:50.01 lffYMjCi.net
print print (1+2)+(4+5)+6+7;
3
23
print print print (1+2)+(4+5)+6+7;
3
23
1 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


704:デフォルトの名無しさん
17/03/31 22:38:54.66 PsuuxH/N.net
$hash{'aaa'}{'bbb'}{'ccc'} = 1;
みたいなことをしても、普通に通るのが凄いよな
それでいて、仕様としては別に多次元ハッシュなんか対応してない

705:デフォルトの名無しさん
17/04/01 08:51:48.01 AF9KLm8F.net
なにをするんでもいちいちチェックが入って膨大な自動操作が裏で行われてる証拠。
さらに変数と実体を結びつけるデータテーブルもかなりの容量を使用してる。
木構造の探索などをやると、動作がCの10倍程度違うと言われるけど、やってみたらメモリ容量が100倍以上違うことも確認された。(将棋の盤面探索)。
まあ一時的にスクリプトが欲しいときとか、それが良い時はそれで良いけど、
通常のソフトウェアを作る時内部でそんなことが起きれてば完全な欠陥なわけであって。

706:デフォルトの名無しさん
17/04/01 17:07:22.61 y/H


707:Ezjsw.net



708:デフォルトの名無しさん
17/04/01 17:19:36.13 aXA7htV2.net
>>687
えーと、インタプリタとコンパイラって知ってるかい?

709:デフォルトの名無しさん
17/04/02 11:42:32.36 W390vP7B.net
1 ビット × 8000000 のビットマップって Perl でどうやるんだろう? こうかな?
$perl -e '$h{ $_ } = 1 foreach 0 .. 7999999; system("bash","-c","ps -p \$PPID -F");'
UID    PID PPID C  SZ  RSS PSR STIME TTY     TIME CMD
i     5240 4743 96 253250 997920 1 11:18 pts/4  00:00:05 perl -e $h{
$
みたいなことでもしたんだろうか。

710:デフォルトの名無しさん
17/04/02 12:21:59.20 n1w2M1cg.net
>>689
インタプリタとコンパイラの速度差は2倍未満と言われてるけどな
この場合は自動型変換などの暗黙の処理とデータテーブルが問題。
もちろん自動型のコンパイラを使用しても同じ結果になる。

711:デフォルトの名無しさん
17/04/02 13:25:59.95 zGspEIRF.net
お前の情報源はえらくあやふやだな

712:デフォルトの名無しさん
17/04/02 14:35:50.91 n1w2M1cg.net
「そう言われてる」ってやつだからな。
ただ有名なんで検索すればいろんなところで出てくる。
10倍遅くなるのは、自動処理が8でインタプリタが2、合計10

713:デフォルトの名無しさん
17/04/02 14:37:05.43 n1w2M1cg.net
別に正確な情報どうこうじゃなくて、
おそいのがインタプリタのせいだと思ってるよりずっといいでしょって話

714:デフォルトの名無しさん
17/04/02 15:56:48.17 s5HPpPnI.net
>>690
1行目とその先の関連がよく分からんが
URLリンク(perldoc.jp)

715:デフォルトの名無しさん
17/04/02 16:44:24.11 W390vP7B.net
ろくに知らなければこういうことをするかもな、という想像なんだが。わかりにくかったのならすまん。
なにしろ何をしたのかまったく解らないから適当に想像するしかないんだよ。

716:デフォルトの名無しさん
17/04/15 03:58:55.24 vTxJoJiF.net
Cでも
伸び縮みを含めた動的なメモリ宣言と開放と、呼び出しの度そのチェックと、管理情報の保存.
動的な値の自動変換と、呼び出しの度そのチェックと、管理情報の保存.
たったこんだけでも超遅くなるか
つか動的な宣言って超遅いよね

717:デフォルトの名無しさん
17/04/15 04:02:38.36 vTxJoJiF.net
それはそうと俺も稀にPerlやるんだが、
use utf8;
use strict;
use warnings;
binmode STDIN, ':encoding(utf8)';
binmode STDOUT, ':encoding(utf8)';
binmode STDERR, ':encoding(utf8)';
これ毎回書くんだが、全部省略できないかの
すぐこれ書くの忘れて文字コード関係でおかしくなるし、書いたら書いたで無駄に目障りなんだが・・・

718:デフォルトの名無しさん
17/04/15 10:45:22.06 DbxhuG0l.net
# Hoge.pm
package Hoge;
use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(utf8)';
binmode STDOUT, ':encoding(utf8)';
binmode STDERR, ':encoding(utf8)';
sub import{
  strict->import;
  warnings->import;
  utf8->import;
}
1;
# script.pl
use Hoge; # ただし@INCからHoge.pmが見つかるようにする

719:デフォルトの名無しさん
17/04/15 10:52:14.57 DbxhuG0l.net
そういやutf8なら
binmode STDOUT, ':utf8';
で良かったか

720:デフォルトの名無しさん
17/04/15 20:57:19.56 GBtgusH0.net
>>686
参照の -> を参照に対しては省略できるってだけだが。

721:デフォルトの名無しさん
17/04/15 21:19:29.96 4y1tBhnC.net
それが凄いところ
オブジェクト指向だって、ほんの小手先でちゃんと実用になるものを実装しちゃってる

722:デフォルトの名無しさん
17/04/15 23:53:13.69 k4jkkg7x.net
>>702
最低レベルな。
小手先で済ませちゃったから、それ以上の
便利な機能はライブラリ任せになっちゃって
いつまでも標準が生まれなかった。
Perl6にさっさと移行すればいいのに

723:デフォルトの名無しさん
17/04/15 23:58:43.13 4y1tBhnC.net
言語なんてそれでいいだろ
標準に拘っても何も得しない

724:デフォルトの名無しさん
17/04/16 00:42:48.16 cCOM2/u0.net
>>704
可読性の問題だ。
意味は全く一緒なのに、書き方を変えてどうする?
言語を変えるのと一緒だぞ

725:デフォルトの名無しさん
17/04/16 00:57:54.05 h3ZKvGOL.net
どうせ定番の奴がデファクトスタンダードになるんだから同じことだ

726:デフォルトの名無しさん
17/04/16 01:01:17.12 cCOM2/u0.net
その定番が生まれなかったんだろ

727:デフォルトの名無しさん
17/04/16 06:42:15.56 h3ZKvGOL.net
それは目的がニッチ過ぎたか利用者が少なすぎたからで、
どっちにしろ標準になんかならない

728:デフォルトの名無しさん
17/04/20 20:48:25.04 6ZaZCTR2.net
Perl6 ? そういえばそうゆうものもあったな。ググると、
1年半前に正式安定版がリリースされたのか。知らなかった。
誰も、その事を話題にすらしていないし。
スレリンク(php板)
「 Perl6/Parrotスレ - Part2 」

729:デフォルトの名無しさん
17/04/20 21:37:11.61 3zMwUShO.net
Perl6は別の言語だからな

730:デフォルトの名無しさん
17/04/20 22:48:25.36 QXbdV/cO.net
pythonもバージョンが上がって別言語になった

731:デフォルトの名無しさん
17/04/20 22:52:03.43 NBs+Bll8.net
>>711
なってないわ

732:デフォルトの名無しさん
17/04/20 23:04:27.00 Viw0Nzyo.net
>>698+699
PERL5OPTと組み合わせれば全て解消。

733:デフォルトの名無しさん
17/04/23 19:39:54.82 W+YLVZyj.net
>>697
そうか?ディスクI/Oが絡まないようなメモリ上だけの操作ならさほど遅い感じしないけど。
まあ、単純なのと比べたら遅いけどね。

734:デフォルトの名無しさん
17/04/23 19:56:30.69 W+YLVZyj.net
>>698
use encoding は?

735:デフォルトの名無しさん
17/04/30 10:11:15.92 zwl8qhxW.net
>>714
理論上完全に最適化できたとしても速度差は5倍以上あるよ

736:デフォルトの名無しさん
17/05/03 00:40:52.14 M+hoQd/o.net
$str = "みかん りんご ぶどう";
を・みかん ・りんご ・ぶどうというように文字の最初に・をつけるには
どう置換すればいいんですか?

737:デフォルトの名無しさん
17/05/03 00:56:20.79 weHSRqvf.net
join '', map { '・' . $_ } split ' ', $str;

738:デフォルトの名無しさん
17/05/03 01:07:15.97 Qv6lwwF1.net
$str =~ s/(\w+)/・$1/g;

739:デフォルトの名無しさん
17/05/03 01:13:44.21 i0PT5y6P.net
試してないだろ

740:デフォルトの名無しさん
17/05/03 02:22:37.42 0sDWrHda.net
linux mint18
perl6のインストールについて

$ sudo apt install rakudo
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
E: パッケージ rakudo が見つかりません

どうしたらインストールできます?

741:デフォルトの名無しさん
17/05/03 02:40:51.60 0sDWrHda.net
$ perl6 -v
This is perl6 version 2015.11 built on MoarVM version 2015.11

すいません、解決しました

742:デフォルトの名無しさん
17/05/11 19:50:38.19 nIm7OIQv.net
POD書いてる?

743:デフォルトの名無しさん
17/05/11 23:25:04.61 nen5x9dT.net
メモリリーク検出になに使ってる?
とりあえず昔からTest::LeakTrace使ってるんだけど
いまはもっと便利なものがあったりするのかな?

744:デフォルトの名無しさん
17/05/24 13:05:14.66 9utV0RoM.net
Perl/Qt は癖があるね、Perl/Qtとクラスを同時に使おうとするとなかなか大変。

745:デフォルトの名無しさん
17/05/28 12:56:56.81 +Ey6Jlm8.net
テキストファイルを読み込むときに


746: // (例えばfile://...) があると、そこから行末まで読み込めない現象が起きるんだけど どうしたらちゃんと読み込める? binmodeにしても解決しなかった



747:デフォルトの名無しさん
17/05/28 13:01:09.18 +Ey6Jlm8.net
>>726
open fp, "<$file";
while(<fp>){
print $_;
}
みたいな感じで読み込んでる

748:デフォルトの名無しさん
17/05/28 14:02:42.07 0c9kwMSl.net
そんな訳ない

749:デフォルトの名無しさん
17/05/28 14:05:21.98 9RwfEHwH.net
ファイルハンドルからダブルスラッシュが含まれる行を読み込もうとするとダブルスラッシュが行末と誤認されるという解釈でいいんですかね

750:デフォルトの名無しさん
17/05/28 14:33:51.85 eFuC5yco.net
絶対になにかカンチガイしてるだろう。
単に出力のバッファリングで単に表示されてないだけとか。
もしくは自分で"//"以降を削除するような処理をしているとかだな。
正規表現の書き誤りがあやしい。

751:デフォルトの名無しさん
17/05/28 14:59:23.09 0c9kwMSl.net
実際に、>>726の方法で読ませればちゃんと読む筈
怪しい箇所を削っていって試せばいい

752:デフォルトの名無しさん
17/05/28 15:01:31.81 /dM5Kslk.net
>>726
再現コードを

753:717
17/05/28 16:52:39.75 +Ey6Jlm8.net
カンチガイでした
別のところでCのコメント削除をしていて
そこで消えてました
テヘペロ

754:デフォルトの名無しさん
17/05/28 18:05:45.48 DFLy+ixu.net
ま、そんなもんよ
いい経験したな
次に活かせよ

755:デフォルトの名無しさん
17/05/28 20:22:17.89 4xPNWoV3.net
C/C++のソースコードを読んで
コメント削除したソースコード
ifdefとかのプリプロセスしたソースコード
typedef, struct, unionとかを抽出した結果
を得たいんだけどどうするのがいいだろう

プリプロセスしたソースコードをcflowに渡すと
関数コールツリーを得られるから
それらを使ってCのソースコード理解に役立てたい

756:デフォルトの名無しさん
17/05/28 21:37:34.83 QPUrPhGM.net
>>735
何が難しいのか、なんでそんなことをしたいのかよくわからん。

757:デフォルトの名無しさん
17/05/28 22:39:53.18 H3cdg50W.net
>>735
自前で作るって話からは外れるけど、Doxygenに突っ込むとかじゃダメなの?

758:デフォルトの名無しさん
17/05/29 06:06:36.99 iFMZQ+Zt.net
>>736
Cのソースコード理解のため

難しいのは例えばif x>=10 && (defined(y) || z==1)とか
ifdef elif else endifとかの入れ子とか
を正しくパースしたりすること

structを抽出したあと
それらの参照関係も図示したい

759:デフォルトの名無しさん
17/05/29 06:07:01.52 iFMZQ+Zt.net
>>736
簡単なら作ってgitとかにあげてほしい

760:デフォルトの名無しさん
17/05/29 06:09:33.49 iFMZQ+Zt.net
>>737
プリプロセスする前のコードだと重複したりすると思う

gcc -Eとかだと
#defineとかまで展開されるからそれは抑えたい

761:デフォルトの名無しさん
17/05/29 06:15:46.76 1pPkP4QE.net
gcc -E じゃだめなのか。
cpp のソースコードを読んでみるのがいいと思うよ。
昔、LSI-C 86 のプリプロセッサのソースコード読んで勉強したなあ。

762:デフォルトの名無しさん
17/05/29 07:11:36.94 7MORbIbH.net
>>735
cflowの中でプリプロセスするから事前にする必要はないと思うけど

763:デフォルトの名無しさん
17/05/29 17:52:39.84 aFd0yPA1.net
>>742
一部だけプリプロセスさせたいんです
マクロとかはそのままの方がわかり易いので

764:デフォルトの名無しさん
17/05/29 18:14:45.54 aFd0yPA1.net
例えば
#define ERRLVL 5
#define WARLVL 3
とかなってるのをプリプロセスすると
数字に置き換わるので意味が判りにくくなる

だけど#ifdefとかはプリプロセスしないと
例えば32ビット版の関数や構造体と
64ビット版の関数や構造体が重複してしまう

765:デフォルトの名無しさん
17/05/30 04:54:25.56 Al54U2am.net
CPAN に Text::CPP なんてのがある


766:諱B そのままではご要望どおりじゃないと思うけど参考にはなるかも。



767:デフォルトの名無しさん
17/05/30 20:58:34.87 Al54U2am.net
言いたいことはよく解る。
とりあえず、プリプロセッサの通常の動作から変更したいのは
・C ソースの中のマクロ置換はしない
・#define ディレクティブは用済みになっていないのでそのまま出力する
といったところ?
もし Text::CPP の作者がそれを有意義だと思ってくれたら、
なんとかしてくれる可能性もなくはないかもしれないな。
連絡先は README に書いてあるよ。

768:デフォルトの名無しさん
17/05/30 21:10:46.26 Al54U2am.net
cpp をそのまま使うという方法もなくはないよ。

#define ディレクティブの前と C ソーステキストの前の行に
#line ディレクティブを入れる。
cpp の処理結果には #line ディレクティブがあるから
それを手がかりに元のファイルからコピーする。

この程度のことなら出来そうじゃない?

769:726
17/06/01 00:33:15.15 mVcFCi6e.net
作ってみたけどバグがあるだろう
URLリンク(github.com)

770:デフォルトの名無しさん
17/06/04 17:04:48.43 JLuePf+9.net
あまり野暮なことはいいたくないけど、ファイルハンドルから行を読むんじゃなくて
トークンを読んだ方がシンプルに書けるんじゃないかな。そうすれば
while(( my $tokentype,my $str) = gettoken( $fh)){
if ( $tokentype == 'comment'){ case_comment;}
elsif ( $tokentype == 'string'){ case_string;}
みたいなやり方が出来る。気を悪くしないでほしい。本当にそう思ったんだ。

771:デフォルトの名無しさん
17/06/05 23:40:47.35 AlRALdx8.net
gettoken()を作ってread()で一文字ずつ読み込んでトークンを返すのは良さそうだけど
トークンタイプはその時の状態が判らないと判別できないと思う
//は普通の状態で現れたらコメント開始だけど
"の中だと文字列
/*の中だとコメント文字列

772:デフォルトの名無しさん
17/06/09 13:39:22.36 jmjGKHXw.net
tcpのIO::Socket使ってサーバーに対してconnectした後、closeせずに親プロセスは接続を維持したまま、
forkした子プロセスでサーバーから受信した大量の文字列をファイルに書くとかするには子プロセスが継承したソケットをどう破棄したらいいの?
現状では当然の事ながら親プロセスの受信待ちが完全に止まってしまって困ってます

773:デフォルトの名無しさん
17/06/09 14:33:09.33 1EhRpyQk.net
なぜ子プロセスでコネクトしないの?

774:デフォルトの名無しさん
17/06/09 14:41:19.37 jmjGKHXw.net
>>752
客先のサーバーの仕様とやらで複数の接続(connect)に対応していない模様(爆)

775:デフォルトの名無しさん
17/06/09 19:57:08.76 ipZEdn/U.net
>>753
親プロセスの接続を切れば複数接続じゃなくなると思う

776:742
17/06/10 02:10:59.82 6TQL4PKJ.net
解決しました
fork()してから普通に子プロセス側で$socket->close();すれば良かったのですね。
ありがとうございました

777:デフォルトの名無しさん
17/06/13 00:27:54.86 5t+GNw1N.net
>>676,684-685
なぜこうなるの?

778:デフォルトの名無しさん
17/06/13 02:06:41.19 Z49xlslC.net
ヒント:
print"Hello world!\n";
print "Hello world!\n";
print("Hello world!\n");
print ( "Hello world!\n" );

779:デフォルトの名無しさん
17/06/13 06:02:24.69 TrwiR2C4.net
1. print 文は実行が成功するとTrue(1)を返す
2. すべての引数を括弧で括るのでなければ、print というキーワードの 次に開き括弧を書いてはいけません

ってだけの話。

print print print (1+2)+(4+5)+6+7;
は、
print (1+2) を実行したあとに
print 1+(4+5)+6+7実行して、
その戻り値1をプリントしてるだけ。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

546日前に更新/269 KB
担当:undef