いう挙動をする特殊変数なので、そうなる。なんで、こんな不自然に見えるインターフェースになっているのか?これにはPerl特有のコンテキストという考え方が関わってきます。Language)として作られています。これは要するに、データ表現を単一のスカラにまとめ、そしてそのスカラを評価した文脈によってデータ表現を変えることによって、同一の概念を1つの変数で簡便に扱うための概念です。https://www.slideshare.net/KondoYoshiyuki/yapc2012-20120929このコンテキストを実現するための仕組みとして、Perlのスカラ変数は同一の値に対する複数の型のデータ表現を持つSV構造体として表現されます。具体的にはPV/IV/NVという3つの値をSVに同時に持つことができます。https://metacpan.org/pod/B#OVERVIEW-OF-CLASSES通常はこれらのIV/PVなどには同一のデータを単に型変換したデータが保持されます。Languageたる世界観なのです。ソフトウェア工学的に正しいかどうかはさておき、データを直感的に扱うためのアプローチとしてはユニークで面白い概念なのではないかと個人的には思います。dualvarさて、これを見た賢い人は「つまり単一のスカラに違うデータを入れることも可能なのでは?」と考えると思います。そのとおりで、標準モジュールのScalar::Utilにdualvarという機能があります。18IV/PVに別々の値が入っており、それがそれぞれのコンテキストに応じて使われている事がわかります。dualvarのようなスタイルで実装していると考えられます。ちなみに、一応書いておくと、dualvarを通常のソフトウェア開発で使うべき場面は基本的には存在しないと思います。dualvarのようにして実装されているのでは?と想像できると思います。$!;やはりIVにはerrnoが、PVにはそのエラーメッセージが格納されています。評価したときに何かが起きて、IVに応じたPVがセットされた。いうことがわかります。これを実行しているのがMAGICと呼ばれる仕組みです。MAGICMAGICは変数の操作に対してフックするための仕組みです。値が取得された前に何かを行う。値を代入した後で何かを行う。表わしているものををクリアする。結び付けられてい領域を解放する。あるので先のドキュメントと照らし合わせるとやはり特殊スカラ変数向けのMAGICが内部的に定義されていることが分かります。よって実際の処理が行われていることが分かります。以下の分岐に入ってきます。提供するグローバル変数のerrnoにもセットしています。VMSの場合は挙動が少し違うようです。実行され、errnoをSVのIVスロットにセットし直して最終的にはstrerror関数によってerrnoのエラーメッセージを取得してPVスロットにセットしています。挙動がどのように実現されていることが分かりました。Perlの特殊変数でerrnoを扱います。その挙動はMAGICによって実装されており、dualvarのように振る舞います。使うときはコンテキストによって表現を変えるのでコンテキストを適切にコントロールしましょう。2019年5月3日すると有益な情報を友人知人に教えてもらえた。NASがと明言したのはLinuxだったら公式のサポートがなくてもコード書けばどうにでもできるやろ...という希望的観測が持てたからで、要件としてはツイートしたとおり「非同期で差分をDropboxにあげてくれる(Dropboxじゃなくても良い)」「省電力でスタンドアロンで動いてくれる」ということでDropbox同期などの機能があるNASなら問題なかった。いうより正直なところ連携をあまり期待していなかったのでこんなにあるのかと驚いた。basedのほうが気持ちがわくわくしそう。)また、NAS自作も選択肢にあったが、楽をしたいので出来合いのやつがあればいいなという感じ。おすすめしてもらったやつはいずれも要件を満たしていた。