Perl初心者スレ(マジレス回答)

2012/10/07(日) 00:48:39.00
どうぞー
2014/02/23(日) 00:39:36.75
>>269
>PerlとLispが結婚して隔世遺伝が黒魔術で生まれた言語。
>Javaは硬度8くらい、Pythonは6くらいになるのに対して、Rubyは3くらいになる。

との記事を見つけました。いつの記述かわからないのですが(汗)
Rubyも明日、本屋で漁ってみます。ありがとうございます。
2014/02/23(日) 00:40:48.81
>>270
すみません。退散します。
みなさん、マジレス、ありがとうございます。
2014/03/05(水) 06:22:38.93
>>232-234
_EOM_なんて使っちゃだめだよ。見づらい。

print "Content-type: text/html\n\n";
print "<html>";
print "<body>";
print "A*B = $A * $B";
print "</body>";
print "</html>";
2014/03/25(火) 21:15:29.29ID:dz69sIJc
print "あいうえお";

↑これを文字コードをeuc-jpで保存してコマンドプロントからこのファイルを実行して
コマンドプロンプト上に文字化けなく あいうえお と出力させるにはどういうコードを追加すればいいの?
2014/03/25(火) 21:25:34.52ID:dz69sIJc
>>274はちょっと疑問に思っただけで何かするのに必要なワケじゃないので無理して
答えようとしないで下さい。たぶんちょっとググった程度で分かるようなことではないです。
2014/03/25(火) 21:54:24.41ID:En8OrmpQ
>>274-275
http://perldoc.jp/docs/modules/encoding/encoding.pod

use encoding 'euc-jp', STDOUT => 'cp932';

但し Perl 5.18.0 以降、encoding プラグマは非推奨で将来的に削除される予定。
http://perldoc.perl.org/encoding.html#WARNING
277274
垢版 |
2014/03/25(火) 22:08:05.94ID:dz69sIJc
>>276
うおお、すごい、あっさり出来てしまった・・。
今日一日↓こんなのでやろうとして泥沼にハマってました。

use encoding "euc-jp";
binmode STDOUT, ':encoding(cp932)';

スーパーハカーさんどうもありがとう〜
2014/05/07(水) 01:39:02.09ID:NfbdqxRr
print +(3,2,1,),"\n";

↑これ、+記号を消すと改行が反映されなくなるんですが、この+記号って
どういう意味ですか?ググるためのキーワードだけでもおねがいします。
ググると +{ } は出てきたんですが +( ) はなぜか見つかりませんでした。
2014/05/07(水) 04:47:36.14ID:nyTYPDB6
>>278
(print(3,2,1)), "\n";
2014/05/07(水) 06:28:00.20ID:WoJ0c0N0
+() は scalar () とほぼ同等。
+{}は、ブロック中の戻り値(?)をスカラーとして評価しますって意味。
+()は、リストとして評価しませんよーって意味。

perldocのperlopの
Terms and List Operators (Leftward)

Unary "+"
を参照してください。
281278
垢版 |
2014/05/07(水) 09:44:31.49ID:NfbdqxRr
>>279-280
なるほど、+{ } と同じような使い方だったんですね、ありがとうございました。
perldocもこれから読んでみます、多謝。
2014/05/17(土) 17:23:28.43ID:syasv/b2
windowsの隠しファイルを判別する方法を教えてください
2014/05/17(土) 18:53:12.61ID:9KhUrEje
>>282
http://search.cpan.org/dist/Win32-File/File.pm

use Win32::File qw(GetAttributes HIDDEN);
GetAttributes($ARGV[0], my $attr) or die $!;
print +($attr & HIDDEN) ? 1 : 0;
2014/05/17(土) 18:54:17.69ID:syasv/b2
>>283
ありがとうございます
2014/05/24(土) 13:13:06.88ID:JzdRsmzF
掲示板のCGIを設置したんだけど、<a href="./bbs/mtbbs.cgi?">って感じにリンクするようにして、http://172では、ちゃんと作動したんだけど、
実際にFTPに転送すると、作動しないどころか画面が写らない
500エラーが出てくる

原因に関してはまだわかんなくて、調べてるんだけど、そもそも思ったのが<a href="./bbs/mtbbs.html">ならまだしも<a href="./bbs/mtbbs.cgi?">なんて、直にリンクすることなんてできるの?
2014/05/24(土) 17:20:37.74ID:Cq+cm/k7
>>285
WebProg板へドゾー
2014/05/25(日) 10:23:53.30ID:iOXakntE
>>285
リンクはできる
動かない原因は別にある
288デフォルトの名無しさん
垢版 |
2014/06/04(水) 10:34:27.77ID:8N6swAY/
知恵袋で質問したら回答どころか閲覧すらなさすぎワロタ・・・
289デフォルトの名無しさん
垢版 |
2014/06/04(水) 15:39:06.30ID:ZiHf6GEW
早くマジレスしろ屑やろう
290デフォルトの名無しさん
垢版 |
2014/06/05(木) 04:14:43.22ID:tjfA5i3O
質問してもどうせまともに答えてくれないんだろうな
どこ行っても解決しないわ
2014/06/05(木) 06:34:54.17ID:Mvr5+GEe
Web以外で最近なんか未解決質問あったっけここ
2014/06/05(木) 19:01:58.49ID:aZWI6Ot4
>>291
今日も元気に残件なす!
2014/06/08(日) 05:04:05.20ID:LT2twBt5
複数のRSSフィードを結合して一つのRSSを生成したい。
その際、「生成されたフィード記事のリンクURLすべてを任意のリンク先に指定する。」
このやり方を教えてください。

XML::FeedPP、XML::TreePPというモジュールを用い、下記のCGIプログラムを使用して自動更新する1つのフィードを生成するところまでは出来ました。
しかし、他の部分はチョロチョロと変えることができるのですが、記事リンクだけはどうしても変えることができません。全部の記事リンクを、ある1つのリンクに変換したいだけです。

#!/usr/bin/perl

use XML::TreePP;
use XML::FeedPP;

my $feed = XML::FeedPP::RDF->new();
$feed->merge( "結合したいrssフィード1" );
$feed->merge( "結合したいrssフィード2" );
my $now = time();
$feed->sort_item();
$feed->pubDate( $now );
my $atom = $feed->to_file( "index.rdf", "UTF-8" );

print "Content-type: text/plain\n\n";
print "出力完了\n";

使ってるレンタルサーバーはロリポップです。

複数のフィード(RSS、Atomなど)をまとめるCGI
http://blog.audiofan.net/archives/491385.html
[Perl] XML::FeedPP - RSS・RDF・Atomフィードの解析・生成・変換・結合
http://www.kawa.net/works/perl/feedpp/feedpp.html
XML::FeedPP
https://metacpan.org/pod/XML::FeedPP#feed-remove_item-index-or-link
http://search.cpan.org/~kawasaki/XML-FeedPP-0.43/lib/XML/FeedPP.pm
2014/06/10(火) 06:01:49.29ID:hRaawaun
>>293
WebProg
http://nozomi.2ch.net/php/
2014/06/10(火) 12:30:22.68ID:zpbxFFHG
ttp://s1.gazo.cc/up/88224.jpg
こういった10行で一組のデータの中に
---
市民の...

yerles
warrior
---
というパターンが多くあります。
マッチ検索したいのは
---
市民の...

dog
warrior
---
というパターンです。
"市民"という文字を見つけたら
2行下に
"dog"という文字があるならば
その、"市民の..."を出力して欲しいです。

ファイル読んで単純マッチするぐらいしか今はできません
open (my $in , "<" , "./cdatan_5_101.s2");
while (<in>){
  if (/yerles/){print "matched\n"}
}
close $in;



}
2014/06/10(火) 13:44:16.05ID:kKsVvptA
>>295
http://ideone.com/0A9TR0
2014/06/10(火) 13:58:26.18ID:kKsVvptA
手抜きすぎた。

>>295
http://ideone.com/NUuEtp
2014/06/10(火) 14:45:55.30ID:zpbxFFHG
凄い。ありがとう。
出てきたshiftとか勉強してみます
感謝
2014/06/11(水) 22:22:53.08ID:PCU6+AOL
どこにshiftの出番があるのか?と思ったらそう言うことか。
普通に配列に突っ込んで、マイナスのインデクスでアクセスすりゃいいやん。
$ perl -Mvars=@a -lne 'push @a, $_ ; next if !/dog/ ; next if $a[-3] !~ /市民/ ; print $a[-3]' File
メモリ喰いが気になるのなら、
$ perl -Mvars=%h -lne '$h{$.} = $_ if /市民/ ; next if !/dog/ ; next if ! defined $h{$. - 2} ; print $h{$. - 2}' File
とか、で節約すりゃいい。、、、けど、今時そんなの気にする必要もないだろ

上のワンライナーでやってる事は、
$ perl -MO=Deparse -Mvars...略
でわかる。
2014/06/12(木) 13:15:46.45ID:qt4Roz23
恰好をつけるなら、リングバッファでも書くところですが、回答としては、あんまりだと思ったので。
2行固定なら、別に使わなくても。
perl -ne '($_, $x, $y) = ($x, $y, $_); $y =~ /dog/ && /市民/ && print' File

何も考えなくていいなら、正規表現でバッサリ。
perl -e 'print((local $/ = <>) =~ /(^.*市民.*\n).*\n.*dog/gm)' File
2014/07/13(日) 23:15:08.85ID:m+RTKRIb
>>300
1ヵ月以上もお前のレスにレスがつかないのはなぜか分かる?
お前みたいなゴミクズは誰も必要としてないからだよ。
一般社会ではあからさまに無視するわけにもいかないから当たり障りのない対応をしてもらってると思うけど、
お前ハッキリ言って迷惑だから。

ゴミクズはネットでもリアルでもできるだけ社会と接点持つな。
2014/07/26(土) 13:51:21.84ID:5yhnFgSu
Test Summary Report
-------------------
t/config-finder.t (Wstat: 512 Tests: 0 Failed: 0)
Non-zero exit status: 2
Parse errors: Bad plan. You planned 26 tests but ran 0.
Files=86, Tests=923, 636 wallclock secs ( 2.64 usr 1.67 sys + 247.77 cusr 297.98 csys = 550.05 CPU)
Result: FAIL
Failed 1/86 test programs. 0/923 subtests failed.
Makefile:945: recipe for target 'test_classic' failed
make: *** [test_classic] Error 255
PETDANCE/ack-2.12.tar.gz
/usr/bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
reports PETDANCE/ack-2.12.tar.gz
Running make install
make test had returned bad status, won't install without force
Failed during this command:
PETDANCE/ack-2.12.tar.gz : make_test NO

Windous上のcygwinとLinuxでCPANのackをインストールしているところでつまずきました
上のエラーはcygwinの方のエラーです
これは、curlを使えば回避できるそうですが http://d.hatena.ne.jp/katz_24/20130210/1366387522
setup.exeを利用したインストールでも何故かインストールができずに手詰まりになりました

ack-2.12.tar.gz を回答してみても訳が分かりません
ackをインストールする手はありますか?
303デフォルトの名無しさん
垢版 |
2014/07/26(土) 14:09:06.14ID:mdOIZXZW
make test had returned bad status, won't install without force
まけ出来てるのならいんすこ自体は可能
2014/07/26(土) 15:10:46.74ID:5yhnFgSu
force installでcygwinの方に入れました
正常に動作します
ありがとうございました

Linuxの方は、手っ取り早く
sudo aptitude install ack-grep
しました

おかげさまで両方にackが揃いました
感謝します
2014/08/06(水) 20:37:58.86ID:Wa4hIBKh
xmlを取得して中身を
s|。|。<br>|g;
して句読点ごとに改行させたかったのですがどうしても出来ません
なにか理由があるのでしょうか
初心者なもんで変な質問をしていたらすいません
2014/08/06(水) 20:41:08.65ID:itqhygIz
文字コード
2014/08/06(水) 20:43:50.60ID:E5F7+XJp
エスパーじゃないんだから、そんな質問で答えれる訳ないだろ。
せめてサンプルとなる簡単なxmlを出せよ・・・
2014/08/06(水) 21:39:48.88ID:Wa4hIBKh
申し訳ないです

>>306
デコードはしています

>>307
申し訳ありません
wikipedia.simpleapi.net/api?keyword=Test&output=xml
2014/08/06(水) 22:33:25.28ID:E5F7+XJp
>>308
テストした結果、普通に置き換えできます。
取得方法に問題があるんだろう。
ってか、こんな質問の仕方じゃスレ全部埋まるわ・・・
問題が起きてるサンプルコード出してみ
2014/08/06(水) 22:37:04.17ID:itqhygIz
>>308
ちげーよ
utf8のファイルをeucのスクリプトでマッチしようとしたんじゃないの、ってこと
2014/08/06(水) 22:48:45.57ID:Wa4hIBKh
>>310
shift-jisのスクリプトでマッチさせようとしました
不味かったでしょうか
2014/08/06(水) 23:05:36.50ID:itqhygIz
>>311
なら、どっちかの文字コードにencodeして合わせる
2014/08/06(水) 23:07:49.58ID:E5F7+XJp
いや、よほど特別な事情がない限りは utf-8 のソースにするべき。
http://d.hatena.ne.jp/perlcodesample/20091118/1246679588
この辺読んで理解するべき。
2014/08/18(月) 11:10:58.79ID:Umc6CSTk
> perl -e "print (5+5)/3"
10

なんで?
2014/08/18(月) 19:48:40.74ID:3b1Nz6uJ
print -e "print((5+5)/3)"
2014/08/19(火) 07:25:44.81ID:o0wKf1/G
>>314
http://perldoc.jp/docs/perl/5.18.1/perlfunc.pod
> 括弧を使うときには、単純な、(しかし、ときには驚く結果となる規則が 適用できます:
> 関数に見えるならば、それは関数で、優先順位は関係ありません。
(略)
> Perl に -w スイッチを付けて実行すれば、こういったものには警告を 出してくれます。
2014/08/19(火) 20:11:13.78ID:pX43W7dG
2000年には既にwarnings実装してんのに
なんで未だに、-w推薦文章なんか残してんだろーね?
-Mwarningsのエイリアスって訳でもねーし。
2014/09/02(火) 01:23:02.48ID:ytxIDh0v
【誤】print -e "print ((5+5)/3)"
【正】perl -e "(print(5+5)) / 3"
ついでに -w と -Mwarnings は別物。-Mwarnings で -w の代わりになるわけではない。
2014/09/02(火) 02:10:54.86ID:EB7tqG6E
だが共に生きることはできる
2014/09/02(火) 04:04:55.52ID:smXsHdMQ
>>318
-w ≠ warningsは常識だろ。

で、「use Unicodeは、use Jcodeの代りじゃない」ってレベルの事を言ってるぞ、おまえさん。
-wが石頭だから、より制御しうるwarningsを実装したんだろが。
2014/09/02(火) 07:00:12.46ID:DO1XeoYm
5.20のperllexwarnがスッキリしててワラタ。
2014/10/02(木) 21:11:40.29ID:5+m7m9lZ
常識の根拠は常識は常識だから(真顔)
2014/11/05(水) 08:46:59.07ID:aEzkt3Do
再帰中に再帰の深さを出したいんだけどlocal使っていい?
local $::count = $::count + 1;
もっと普通の方法ある?
2014/11/05(水) 11:35:00.61ID:+yDKEom1
引数で渡す

sub foo {
  my ($arg, $count) = @_;
  ...;
  foo($arg, $count) if $count++ < 10;
}
2014/11/05(水) 14:22:15.13ID:aEzkt3Do
ありがとーーー。
複製される変数の数には変わりがないよね、たぶん。

上はグローバル変数と言うのが気に入らなくて、下は引数で扱う値が増えるのが気に入らないが。
2014/11/05(水) 16:45:55.49ID:aEzkt3Do
while(@all){ ((shift @all) eq 'cut') and last; }
whileを修飾子として書くと落ちるんだが誰か理由を教えてくれー
((shift @all) eq 'cut') and last while(@all);
evalでも落ちた
2014/11/11(火) 22:49:14.07ID:AzojYpxL
英数混じった文字列の中から2桁の数字にマッチさせたいのですが、
/\d\d/だと3桁以上の数字の前2桁にもマッチしてしまいます。
/^(\d\d)\D|\D(\d\d)\D|\D(\d\d)$|^(\d\d)$/ こんなことするより簡単な方法ないでしょうか? 
2014/11/12(水) 00:09:33.46ID:WHJDipVn
[^\d]\d{2}[^\d]
2014/11/12(水) 02:38:25.07ID:T/b7ogJF
% perl -le 'print q{22} =~ /[^\d]\d{2}[^\d]/'

% perl -le 'print q{22} =~ /(?<!\d)\d{2}(?!\d)/'
1
% perl -le 'print q{22} =~ /(?:^|\D)\d{2}(?:$|\D)/'
1
330327
垢版 |
2014/11/12(水) 22:11:30.88ID:obciIUzc
/(?<!\d)\d{2}(?!\d)/
これが期待通りの結果が得られました。
(?<!)とか(?!)とかこれまで使ったこと無かったので勉強になりました。
ありがとうございました。
2014/11/13(木) 00:03:57.67ID:w30Rb1CY
テストパターンに英字が入ってませんぜ
332デフォルトの名無しさん
垢版 |
2014/11/13(木) 05:25:18.91ID:iJHzIgO3
\b使えよ。便利だぞ。
2014/11/13(木) 05:51:07.66ID:DTTQy1M/
そりゃ\b使って期待通りの結果が出るなら使うだろ
334デフォルトの名無しさん
垢版 |
2014/11/13(木) 23:58:39.09ID:bKuFahzS
以下のような日付が下から上に並んでいるoriginal.txtがあるとします。
これを、日付を逆順にしたoutput.txtに整形するプログラムを作りたいです。
Windowsで、Batch fileとPerlで作れたらと考えています。よろしくお願いします。
<original.txt>
########## 20141203 ###########
DNINITIENK
FDKHJKDKKSK
・・・・・
########## 20141202 ###########
TUNINJKDF
NIGHALKDK
・・・・・・
########## 20141201 ###########
ABCDEFGHIJKE
LMNOPQRSTUV
・・・・・
<output.txt>
########## 20141201 ###########
ABCDEFGHIJKE
LMNOPQRSTUV
・・・・・・
########## 20141202 ###########
TUNINJKDF
NIGHALKDK
・・・・・・
########## 20141203 ###########
DNINITIENK
FDKHJKDKKSK
・・・・・・
2014/11/14(金) 00:03:31.59ID:cRe1Bhcz
>>332
\bだと英字と数字の境目は単語の区切りにならないみたい。
2014/11/14(金) 01:18:41.88ID:VOKh6jxm
centosで元から入ってるperlとは別にソースインストールしたperlを別に入れました。
新しくインストールしたperlで以前から入っていたCPANモジュールを使いたい場合、再度入れなおす必要ありますか?
2014/11/14(金) 02:49:12.43ID:FARMtlO3
>>334
perl -Mvars=%h -ane '$a = $F[1] if @F == 3 ; $h{$a} .= $_ }{ print $h{$_} for sort { $a <=> $b } keys %h’ original.txt

>>336
モジュールの共用は避けるべき
2014/11/14(金) 06:59:52.41ID:Ul+u6aQZ
>>334
use 5.016;
use warnings;

my $boundary = qr/^#+\s+\d+\s+#+\s*$/;

open(my $in, "<", "original.txt") or die;

my @data;
my $chunk = '';
while(<$in>){
if (/$boundary/ and (length($chunk) > 0)){
push @data, $chunk;
$chunk = '';
}
$chunk .= $_;
}
if (length($chunk) > 0){
push @data, $chunk;
}

$in->close;

open(my $out, ">", "output.txt") or die;
$out->print(reverse @data);
$out->close;
2014/11/14(金) 20:30:37.37ID:FARMtlO3
単純に逆にするだけか
perl -00pe '$_ = join q{}, reverse ( split /(?=^#)/m)'
340デフォルトの名無しさん
垢版 |
2014/11/16(日) 13:54:55.61ID:f46/IGen
>338,337,339
有難うございました。
2015/01/12(月) 10:56:30.31ID:av7JsOQD
my $initial_title_ = "\$" . "$initial_threads" . "_begin";
$initial_title_ = eval $initial_title_;

1行に短くなりませんか?
2015/01/13(火) 00:30:37.15ID:Dvj6a5BR
my $initial_title_ = eval "\$${initial_threads}_begin";
こういうこと?
2015/01/13(火) 02:35:14.88ID:sfvPNi0Q
>>342
ありがとう

eval使うのが3つあったから
6行が3行になったよ
2015/01/14(水) 23:01:56.10ID:+qvvUh8r
$seach_wordに日本語を入れたいのですが、それだとマッチしません。どうすればよいでしょうか?
w3m -dump -cols 160 http://peace.2ch.net/test/read.cgi/tech/1349538519/| ~/Perl_instance/resSearch.pl

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;

my $seach_word = ">1" ;
my $found_res = 0;
my $res    = "";

while (<>) {
  if (/^\d/x) {

    # out put, flash
    if ( $found_res == 1 ) {
      print $res;
      $found_res = 0;
    }
    $res = "";
  }
  else {
    # searching
    if (/$seach_word\b/x) {
      $found_res = 1;
    }
  }

  # buffer lines
  $res .= $_;
}
2015/01/15(木) 09:31:41.42ID:+X0UBnJQ
>>344
use open ":utf8";
2015/01/15(木) 09:40:11.27ID:+X0UBnJQ
あ、 binmode STDIN , ":utf8": で
2015/01/15(木) 13:13:41.60ID:WfzbS03y
binmode STDIN , ":utf8";
binmode STDOUT , ":utf8";
my $seach_word = "日本語" ;

で同様のコマンド叩いて、つまり344が拾えるはずが
何故かヒットしません
348デフォルトの名無しさん
垢版 |
2015/01/15(木) 18:33:41.92ID:DbiGPAED
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
2015/01/16(金) 16:08:36.80ID:6B2q2EkL
w3m -dump -cols 160 http://peace.2ch.net/test/read.cgi/tech/1349538519/|nkf -g
UTF-8

UTF-8しか扱わないのにちょっとエンコード回りは複雑だ
2015/01/19(月) 10:22:25.36ID:AihfgHov
webサイトの表形式データ(横方向は5列、縦方向は不定で100行ぐらい)を取得するのに、
正規表現の繰り返しマッチング
m//g を使って、結果を配列に入れてるんだけど、
もっと簡単に取ってくるモジュールはないでしょうか?
2015/01/19(月) 21:45:13.42ID:qpn2CGqA
>>350
>webサイトの表形式データ

の形式が分からんとなんとも。
352349
垢版 |
2015/01/19(月) 22:36:30.03ID:bxHKMq/8
>>346
ヒント助かった。

use Encode qw/encode decode/;
my $enc = 'UTF-8';
sub d($) { decode($enc, shift) }
sub e($) { encode($enc, shift) }

my $seach_word = "日本語";

my $found_res = 0;
my $res    = "";

while (<>) {
  if (/^\d/x) {
    if ( $found_res == 1 ) {
      print $res;
      $found_res = 0;
    }
    $res = "";
  }
  else {
    my $seach_word_ = e$seach_word;
    if (/$seach_word_/x) {
      $found_res = 1;
    }
  }
  $res .= $_;
}
2015/01/20(火) 02:00:35.92ID:FcML0ncg
>>350 >>351
例えば、こんな表です
http://ke.kabupro.jp/hist/20150107.htm

今はHTMLのソースを見て、証券コードを正規表現で抽出するために、
=~ m!<tr><th><a\shref[^>]+>(\d{4})<\/a>!ig
などとして配列へ入れているのですが、泥臭いです。

もっとスマートに取得できるモジュールは無いかと思った次第です。
2015/01/20(火) 02:06:50.85ID:FcML0ncg
(続き)
例えば統計計算用のRでは readHTMLTableというモジュール(パッケージ?)があり、表形式のデータを含んだurlを指定すれば、簡単に取得出来るのですが。
2015/01/20(火) 07:56:47.13ID:y2BAlbXr
>>353
HTML::TableExtract
http://search.cpan.org/~msisk/HTML-TableExtract-2.12/lib/HTML/TableExtract.pm

Web::Scraper
http://search.cpan.org/~miyagawa/Web-Scraper-0.38/lib/Web/Scraper.pm
2015/01/20(火) 12:03:15.85ID:NiHMzyM4
>>355
ありがとうございます
2015/03/13(金) 20:55:35.08ID:hJWhu2F/
なにこの良スレ
2015/03/28(土) 10:06:58.72ID:spJK+jxH
my $tmp = {
$a => sub { $_ = 処理A},
$b => sub { $_ = 処理B},
$c => sub { $_ = 処理C},
};

ループ中に↑のように書いている場合、一つの変数に対して複数の処理($a に 処理A' を追加)を
加えたい場合、どのように書くのでしょうか?
2015/03/30(月) 16:12:56.05ID:4W43OXe7
;
2015/04/12(日) 18:06:38.92ID:eedq/AcT
凄い初歩的な質問だと思うのですが真剣に行き詰まってます
教えてください

_HOGE_

こんな表記の変数ってなんて表現するんですか?
またネットでこういう変数について調べたいときは、
どのように検索したらヒットしますでしょうか。

Perl __
で検索しても全然それらしい記事が発見できず
2015/04/12(日) 18:43:51.80ID:Xaz/Qvpp
_HOGE_は変数じゃないからヒットしないのが正解

もしかして:ヒアドキュメント
2015/04/12(日) 20:02:52.86ID:eedq/AcT
なるほど・・・独自のプログラム記述なんでしょうかね・・・

Perlの変数記述方法じゃないことがわかって少し安心しました
もう一回解析してきます
2015/04/12(日) 20:06:31.76ID:eedq/AcT
>>361さんの回答で先入観が排除され、
意味がわかりました。

$mes =~ s/_HOGE_/$name/g;

文字列に埋め込まれた_HOGE_を別の変数に代入されてる文字列と置換させていました。
ありがとうございました。
2015/04/13(月) 07:38:14.33ID:bJ3+bESR
__END__
とかそんなのの仲間じゃなくて?
2015/05/14(木) 07:11:03.21ID:y4MWBEfC
なんでも受け付けるからって、
__HOGE__ をヒアドキュメントとして使ってる人は、単に
特殊リテラルを理解してない人。

質問に超絶遅レスするなら、
__HOGE__は、ほんとうに HOGE と書かれていたなら、
特殊リテラルのまねっこ。
DATA, END などなら、perldoc.jp で perldata から「特殊なリテラル」の項を
参照すること。
2015/05/15(金) 01:58:16.40ID:3U2TIRvt
>>365
どういうこと?
2015/05/15(金) 02:39:32.50ID:PxFVj8Xw
ヒアドキュメントのデリミタを
print <<die;
dieなんてしないよ
die

ってしたら混乱するでしょ。それと同じレベルで特殊リテラルの
記載に類似(もしくはそのまま)させて使ったら、あかんでしょ。

print <<__END__;
dieなんてしないよ
__END__

って主旨?
2015/05/17(日) 23:46:03.51ID:wdkXHT83
絶対にありえない単語を区切りにしないと、区切りとしての役目にならんだろが
__END__を区切りにしてしまったら、__END__という単語が使えなくなるだろ
2015/05/18(月) 00:16:17.74ID:4BIqDTjB
じゃあ __HOGE__ にするわ。絶対ありえん単語だし。
2015/05/18(月) 00:56:57.87ID:sNwS2iXa
>>368
実行してみろよ、動くぞ。

use strict ;
use warnings ;
while(<DATA>){
print ;
}

print <<__DATA__;
これがヒア
__DATA__

__DATA__
特殊リテラル
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況