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で質問しましょう!
似たような質問が見つかりました
- Web・クリエイティブ figmaの元データは残したまま、複製して編集する方法は? 会社でfigmaを使い始めたばかりの初心 1 2022/06/16 18:42
- バッテリー・充電器・電池 AC-DC電源モジュールの選択について教えてください 3 2022/04/24 11:44
- その他(クラウドサービス・オンラインストレージ) Googleフォトは共有機能で気付かず写真が流出している恐れがあるというのは本当ですか? 「共有」の 2 2022/10/22 08:45
- 統計学 どの統計を使えばいいのか教えてください(EZ-Rを使用) 5 2022/10/11 13:28
- ビジネスマナー・ビジネス文書 管理組合・議案書内の理事長の挨拶文書について 1 2023/03/25 23:54
- 分譲マンション 管理組合・議案書内の理事長の挨拶文書作成にについて 2 2023/03/26 01:56
- iOS Gragebandでのみ左クリックが有効にならない 1 2022/08/19 13:18
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- その他(自然科学) デジタル電圧計電流計の電源の作り方 10 2023/04/15 17:35
- 会計ソフト・業務用ソフト 会計ソフトを探してます。 4 2022/08/17 08:35
関連するカテゴリから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での出力先設定
-
標準エラーと標準出力をファイ...
おすすめ情報
質問の通りにここではコードを例示して下さいと書いているので、その
様に回答願います。ヒントだとか、こうすれば、ああすればとかでは無
くて実際のコードだけがより回答としては積極的で親切です。
ヒントがたとえ有ったとしても、それで動かなければ結局は同じ事で
す。知っている人だったらそれで良いのかも知れませんが。知らないか
ら質問をしているので会って。余り、回りくどいヒントの様な回答より
かは単刀直入のコードを例示して貰えばそれですっきりとします。
それで分からないのがおかしい様な回答の様にも見受けします。最初か
ら知っているのであればそもそも質問はしません。
ここではあくまでもコードの例示のみを私は求めています。その辺を宜
しくお願いします。それ以外の回答はこの場合は論外だと思います。そ
こを宜しくお願いします。