
No.3ベストアンサー
- 回答日時:
for $aref (@newtable){
print @{$aref} ;
}
とだけ書いて、参考になるなら、それでいいんですけど。
$aref=$newtable[0] ;
とすれば
http://perldoc.jp/docs/perl/5.22.1/perlreftut.po …
にある方法で、1行目のデータを配列として扱えます。
for $aref (@newtable){
ここで$arefを使って各行の処理をする;
}
とすれば、全行に対して処理できます。
よって「各行をデリファレンスして出力」なら
for $aref (@newtable){
print @{$aref} ;
}
です。
ただし、全てが1行に連結されて出力されます。
ですが、それはデリファレンスとはまったく関係無い話なので、今回の回答として不適切になります。
分かりやすい説明、有難う御座います。
print @{$aref} <--これだけで十分です。百聞は一見に如かずです。
これで、配列のリファレンスとデリファレンスの使い方は分かりました
が。肝心のクロス集計に関してはどうやら作者の舌足らずな所が有って
これでは上手く動作はしない様です。
説明ではこれ以上の記述は無い様なので。矢張りここでは自作が良い様
です。問題は、ヘッディングでの最後の部分が欠落しています。また、
ここでは集計の方法が無条件に合計となっているのも問題です。
この辺も柔軟性が欲しい所ですが。取り逢えず出来ない事が分かっただ
けでも良いです。矢張り、最初考えていた様に自作するしか無いみたい
です。
有難う御座いました。
No.2
- 回答日時:
> 最後のprint文の出カ結果は下記となりエラーです。
エラーではありません。
書いた通りの正しい動作です。
ARRAY(0x6d2f88)ARRAY(0x6d2b50) は リストをそのままprintしたために各要素「ARRAY(0x6d2f88)」 と「 ARRAY(0x6d2b50) 」が連結されて出力されてしまったものです。
@newtable=(
ARRAYへのリファレンス(0x6d2f88) ,
ARRAYへのリファレンス(0x6d2b50)
);
これは、 @table と同じ構造です。
$newtable[0] 等と個々の要素を取り出せば、それはリファレンスになっています。
その中身が必要なら、デリファレンスします。
http://perldoc.jp/docs/perl/5.20.1/perlref.pod
http://perldoc.jp/docs/perl/5.22.1/perlreftut.pod
有難う御座います。
ここではこの場合の正しく動くコードを例示願います。
言われている事はその通りだと思いますが。
具体的に実際に動くコードを例示して貰わないと
私の理解も出来ません。
宜しく、お願いします。
No.1
- 回答日時:
検索するとdata::pivotと言うモジュールが有ったのでサンプルを動か
そうとしたのですが。上手く行きません。多分にこれは出カはリファレ
ンスだと思いますが。
私はこのperlのリファレンスとでリファレンスとの関係が良く理解をし
ていません。サンプルのソースは下記です。
use Data::Pivot;
@table = ( [ 'aaa', 'bbb', 'ccc', '01', 12.2, 1.4, 5.9 ],
[ 'aaa', 'bbb', 'ccc', '02', 134.5, 12, 12.3 ],
[ 'aaa', 'bbb', 'ccc', '03', 1.25, 30, 123.45 ],
[ 'xxx', 'yyy', 'zzz', '02', 22.22, 7.8, 8.88 ],
[ 'xxx', 'yyy', 'zzz', '03', 111.11, 100, 42 ]
);
@headings = ('Some', 'Fix', 'Columns', 'Pivot_Col', 'Num_Val_1', 'Num_Val_2', 'Num_Val_3');
$pivot_col_no=3;
@newtable = pivot(table => \@table,
headings => \@headings,
pivot_column => $pivot_col_no,
layout => 'vertical',
row_sum => 'Sum',
row_titles => 1,
format => '%5.2f',
);
print @newtable;
ここで最後のprint文を除いてperl -cw 01.plでは問題は有りません。
但し、最後のprint文の出カ結果は下記となりエラーです。
ARRAY(0x6d2f88)ARRAY(0x6d2b50)
最後のprint文をでリファレンスをして出カをしたいのですが分かりま
せん。その部分の正しいコーディングを宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
重複するデータを抽出できる秀...
-
LWPでPOST送信した後に送信先に...
-
Perlでファイルの末尾から指定...
-
sprintfについて
-
Perl<->Oracle間での文字化けに...
-
VBAでCSVファイルを途中行まで...
-
Windowsで複数のファイルを同じ...
-
MATLABのm-fileについて
-
readdir()で得られるファイル・...
-
ExcelをCSV書き出す場合のシー...
-
エクセルVBA コードが同じでも...
-
dos変数の%~dp0は powershellで...
-
MATLAB std::exceptionエラー
-
batファイルでrenameができませ...
-
htaccessで特定のディレクトリ...
-
C言語で特定の行を抽出する方法...
-
FindFirstFileとFindNextFileで...
-
ファイルの削除について
-
ReadLineでの読み出し行を指定する
-
対比較データを表データに変換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
エクセルVBAで素数だけを出力す...
-
DOSコマンドで、標準出力を出力...
-
[awk]uniq -cで複数ファイルの...
-
sprintfについて
-
大量メールの任意のヘッダだけ...
-
log2の「正確な」計算方法
-
[Perl]ファイル出力のエンコー...
-
重複するデータを抽出できる秀...
-
Perl<->Oracle間での文字化けに...
-
文字コードの変換(Shift-JISか...
-
テキストファイルから日本語部...
-
htmlから、ファイル、もしくはC...
-
ファイル出力の改行コードをLFに
-
sprintfで10進数を桁数指定で16...
-
Perl 時間同士の差
-
warnやdieの出力先を変更したい
-
Perlでエラーログに日時をつける
-
エディターでは改行なのにメモ...
-
perlでモジュールを使ってクロ...
おすすめ情報
質問の通りにここではコードを例示して下さいと書いているので、その
様に回答願います。ヒントだとか、こうすれば、ああすればとかでは無
くて実際のコードだけがより回答としては積極的で親切です。
ヒントがたとえ有ったとしても、それで動かなければ結局は同じ事で
す。知っている人だったらそれで良いのかも知れませんが。知らないか
ら質問をしているので会って。余り、回りくどいヒントの様な回答より
かは単刀直入のコードを例示して貰えばそれですっきりとします。
それで分からないのがおかしい様な回答の様にも見受けします。最初か
ら知っているのであればそもそも質問はしません。
ここではあくまでもコードの例示のみを私は求めています。その辺を宜
しくお願いします。それ以外の回答はこの場合は論外だと思います。そ
こを宜しくお願いします。