No.2
- 回答日時:
#1の方と同じような質問になりますが、#1の補足を読んでも意味がわかりません。
引数:2,3,1の意味は、
2の要素の始まる位置から3つの要素で1を除くとか
2の要素の始まる位置から3の要素の始まる1つ前の位置までの要素
とか
そういう(つまり渡されるパラメータの)意味が知りたいのですが
やりたいことが説明しきれておらず、理解が苦しいですよね?
すみません…。
スクリプト自体は、サブルーチンとして使用するのですが、
メインのスクリプトはアンケートになっていて、すべての設問を終えるとパラメータ(引数)がPOSTされます。
例)1,3,2,3,2…(分解後)
パラメータの意味は、「Q1」に対して「1」を答えたみたいな感じです。
それに対して、このスクリプトでCSVファイルから画面IDのような
ものを算出しようと思っています。(行:設問数,列:戻り値)
質問1
まずパラメータをもとにCSVファイルの1行目から、ヒットされた値の要素を全て切り出して配列に格納したいのですが可能ですか?
質問2
上記1行目の評価から、2行目以降も同じ位置の要素を別の配列に格納したいのですが、可能ですか?
※@x…CSVファイルの1行目、@y…2行目、@z…3行目の値が入っています。
例)
@xは「1,1,1,1,2,2,2,2,3,3,3,3」でパラメータが「1」なら「1,1,1,1」の部分(@x[0]..[3])を抜き出して配列@xxへ格納。
そのまま渡された値「1」を返す。
(パラメータが「2」なら「2,2,2,2」部分(@x[4]..[7])を抜き出す。)
2行目以降は、評価せずに@y[0]..[3]または@x[4]..[7]の要素を@yyに格納する。
それから評価して、第2パラメータが「3」なら、@yyの3番目の要素(@yy[2])を返す。
結果的には、1行目で要素の範囲を絞って2行目以降から、絞った列で値を返したいということなんですが、ご教授願えませんか?
No.3ベストアンサー
- 回答日時:
#2の補足を読んでちょっとしたサンプルを作ってみました。
----------------------------------------------------------------
#make_select は、
#make_select(検索値, 配列) の様に呼び出して、
#マッチした位置のデータを選択するような関数を返す
sub make_select ($@){
my ($para, @data) = @_;
my @pos=();
my $i,$len=@data;
for($i=0;$i<$len;$i++){
push @pos, $i if $data[$i] eq $para;
}
return sub {
my ($data, $select) = @_;
foreach(@pos){
push @$select, $data->[$_];
}
};
}
#元のデータ
my @x = (1,1,1,2,2,2,3,3,3);
my @y = (1,2,3,4,5,6,7,8,9);
my @z = qw(A B C D E F G H I);
#セレクトする関数を作る
my $select=make_select(1, @x);
#格納先配列
my @xx=();
my @yy=();
my @zz=();
#&$select(元データの配列のリファレンス, 格納先配列のリファレンス)
&$select(\@x, \@xx);
&$select(\@y, \@yy);
&$select(\@z, \@zz);
#結果の表示
print join(",", @xx) . "\n";
print join(",", @yy) . "\n";
print join(",", @zz) . "\n";
BLUEPIXY様、
仕事が遅くなり返事が遅れてスミマセン。
私のつたない説明で、こんなサンプルまで作って頂いて
本当にありがとうございました。
私もPerlを勉強中の身なので、サンプルコードを良く噛み
砕いて勉強させていただきます。
自分で調べても、わからないことや疑問点が沸いてきたら
またBLUEPIXY様にお聞きするかもしれませんが、そのときは
どうぞよろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Visual Basic(VBA) マクロを教えてください。 7 2023/06/01 19:47
- Excel(エクセル) エクセル テーブル機能の不明点 2 2022/04/14 14:10
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Excel(エクセル) PowerQueryで行数の指定はできますか? 2 2022/08/26 11:13
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- PHP PHP MySql ページング 2 2022/09/20 06:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlで<select multiple>の複数...
-
リストボックスに縦スクロール...
-
for文とforeach文について
-
perlで2次元配列をサブルーチ...
-
2次元配列の扱い
-
perl このテキストファイルを簡...
-
VBA 二次元配列 ループの書き方
-
文字の整列(printf)
-
二次元配列における要素数のは...
-
Powershell $変数 = @()の空配...
-
do-while文での無限ループ?
-
perl 配列名変数指定するには
-
一致する要素が格納されている...
-
プログラミングについて。 1つ...
-
文字列を変数名として扱う方法
-
エクセルの当番表を作っていま...
-
チェックデジットについて
-
ネットワークループとルーティ...
-
どなたかこのプログラミングを...
-
VBA for i=1 to lastrow
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
二次元配列のインデックスについて
-
リストボックスに縦スクロール...
-
Excel VBA ユーザーフォームの...
-
マクロ Publicでの配列定義
-
エクセルVBAでTransposeの不思議
-
二次元配列における要素数のは...
-
Strawberry Perl for Windows ...
-
perlで2次元配列をサブルーチ...
-
クラスに配列を渡す方法
-
Dim flag(4) as boolean で配列...
-
文字の整列(printf)
-
perlで配列の要素が空なのを知...
-
jcode->jfold で禁則処理
-
VB6で配列の最大値を簡単に求め...
-
perl 配列の要素数について
-
ファイル名に日付・時刻を付与...
-
チェックボックスのperlでの値...
-
組み合わせについての質問です...
-
配列を初期化する時ってどうす...
おすすめ情報