以下のperlスクリプトで、どちらも私には同じ結果をもたらすものだと
予想していたのですが、出力結果が異なってしまいます。
なぜ script1 ではエラーなしで動作するのに、script 2では
エラーが出るのでしょうか。
$$xx が d になり、 $$yy が ARRAY(0x180c460) となる理由も
わかりません。
稚拙な質問で申し訳ありませんが、どなたかよろしくお願いしますm(_ _)m
## script 1 とします。
my $xx = \qw(a b c d);
print "$$xx \n"; # d と出力される
print "xx is $$xx \n"; # xx is d と出力。
## script 2 とします。
my @array = qw(a b c d);
my $yy = \@array;
print "$yy \n"; # ARRAY(0x180c460) と出力される。
print "yy is $$yy \n"; # Not a SCALAR reference at tryme.pl line 11. とエラーになる。
No.3
- 回答日時:
確かにそうですね。
my@xx= \qw(a b c d);
print map($$_, @xx), "\n"; # "abcd" と出力
文法的にはNo.2さんのおっしゃる通りみたいです。
これは私も勉強になりました。 \qw(a b c d) の代りに [qw(a b c d)] と書きましょう。
No.1
- 回答日時:
>$$yy が ARRAY
なってませんけどー
script 1の$$xxは$xxの間違いですか
この回答への補足
申し訳ありません。
訂正させてください。 $$xx は $xxの間違いでした。
もう一度、以下に質問を書き直させてください。
本当にすいません。
## script 1 とします。
my $xx = \qw(a b c d);
print "$xx \n"; # SCALAR(0x1801180) と出力される。
print "xx is $$xx \n"; # xx is d と出力。
## script 2 とします。
my @array = qw(a b c d);
my $yy = \@array;
print "$yy \n"; # ARRAY(0x180c460) と出力される。
print "yy is $$yy \n"; # Not a SCALAR reference at tryme.pl line 11. とエラーになる。
$xx と $yy が異なる理由と、$$xx と$$yy が異なる理由が
いまいちわかりません。。
片方はスカラー、片方はアレイ扱いになっているようですが。。
どう解釈すればよいのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Java 年数計算 3 2023/01/28 10:52
- 数学 5組のデータ (xx,yy) = (1.0 , 1.1), (2.0 , 1.0), (3.0 , 2 2023/01/09 16:52
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Yahoo!メール yahooメール使用できなくなった。 1 2022/07/05 11:45
- その他(住宅・住まい) 冬の札幌の暖房器具 4 2022/10/18 07:22
- その他(プログラミング・Web制作) listへのappendが出来ない件 1 2022/12/06 21:44
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- JavaScript javascriptで入力フォームが空欄の時にアラートによるエラーを出すコードを書いています。 2 2023/06/13 17:58
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
log2の「正確な」計算方法
-
Perlでファイルの末尾から指定...
-
DOSコマンドで、標準出力を出力...
-
MAC OSXのTerminalにperlの出力...
-
文字列をカウントする方法
-
ファイル全てを .xlsm に変更し...
-
一定時間が経過したフォルダの削除
-
csvファイルの横方向への改行に...
-
while(<ハンドラ>) {} で行数を...
-
画像アップロード機能を追加し...
-
batファイルでrenameができませ...
-
while文がうまく動かない
-
VBAでCSVファイルの特定行を書...
-
MATLABのm-fileについて
-
配列のサイズを動的に拡張
-
ディレクトリのファイル作成を...
-
ANSI Cでファイル名、ディレク...
-
VB6.0でDB接続する際に切断時の...
-
Pythonの再帰関数の動作の流れ...
-
AutoCADのスクリプト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
DOSコマンドで、標準出力を出力...
-
エクセルVBAで素数だけを出力す...
-
教えて!perlから.exeファイル...
-
sprintfについて
-
Perlでファイルの末尾から指定...
-
CGIから外部コマンド実行時の標...
-
重複するデータを抽出できる秀...
-
ファイル出力の改行コードをLFに
-
timeコマンドの結果をテキスト...
-
sprintfで10進数を桁数指定で16...
-
log2の「正確な」計算方法
-
機器のI/OをArduinoでSDに記録...
-
Perl<->Oracle間での文字化けに...
-
Perl中で teeを使っても戻り値...
-
テキストファイルから日本語部...
-
バッチファイルで、記号を含む...
-
htmlから、ファイル、もしくはC...
-
perlでの出力先設定
-
標準エラーと標準出力をファイ...
おすすめ情報