>改行コードが変な風にいじられていました
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 = @_; のように一度変数で受け取るのが意図しない変更を防ぐ意味でも良いだろう
Perlについての質問箱 63箱目
■ このスレッドは過去ログ倉庫に格納されています
673デフォルトの名無しさん
2017/03/20(月) 19:53:29.20ID:SJAmj6b4■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【お詫び】NTTドコモ、緊急地震速報が配信されなかった事象について 「システム不具合」 [おっさん友の会★]
- 【高市総理】外食産業支援でプレミアム商品券なども検討 [ぐれ★]
- イーロン・マスク氏、テスラの新型「ロードスター」、空中旋回を披露 動画あり [お断り★]
- 【野球】ドジャースまさかの4連敗で終戦…大谷翔平8月以来の1発も空砲 ブルワーズにナ・リーグ優勝決定Sで屈する ★3 [阿弥陀ヶ峰★]
- 中国大使、フィリピンと戦えば「楽勝」だが武力は選ばず 「中国のような隣国を持てて幸運に思うべき」 [お断り★]
- 【グラドル】147cm Jカップ 42歳グラドル「20代にしか見えない」「ウソでしょ?若すぎ」花井美理にネット衝撃 [ヴァイヴァー★]
- 【実況】博衣こよりのえちえちホロ甲2026-前夜祭-🧪★2
- 【総括】石破茂 さんの悪かったところ… [841411289]
- 作者「編集から安倍晋三を生き返らせろと言われて辛い」 [685821185]
- おい❗華金だから、飲みいくのらよ❗(・o・🍬)🏰
- 高市早苗、低所得・中間層に給付金www [237216734]
- 【悲報】高市早苗のサボり、データで分析されてしまうWWWWWWWWWWWWWWWWWWWW [841411289]