subプロシージャ(関数)の引数について教えていただきたいのですが,例えば,
@data1=(1,2,3,4,5);
@data2=(6,7,8,9,10);
&stat::cov(@data1,@data2);
などとすると,sub cov{}で@_という配列の中に一緒に格納されますよね。しかし私としては@data1に格納されているデータと@data2に格納されているデータを別の配列に渡したい(別の配列で受け取るようにしたい)のです。
考えた策としては
sub cov{
my $n=@_;
my $h=$n/2;
for($i=0;$i<$h;$i++){
$x[$i]=shift(@_);
}
for($k=0;$k<$h;$k++){
$y[$k]=shift(@_);
}
(以下省略)
のように,shift関数で1つずつずらして違う配列に格納していくという方法なのですが,これは@data1と@data2に格納されているデータ数が等しい場合で無いと使いものになりません。
指定した引数を@_以外の配列で受け取らせる方法などはないものでしょうか?ちなみにPerlはまだ初心者にも達していないド素人ですのであまりプロ志向のものは勘弁してください(それでもなければ仕方ありませんが、、、)。
No.1
- 回答日時:
がると申します。
…恐らく、質問者さんのおっしゃるところの「プロ志向」な回答になりますので、最終手段としてでもご覧いただければ。直接的には「参照を用いる」のが正解になります。
@data1=(1,2,3,4,5);
@data2=(6,7,8,9,10);
stat::cov(\@data1,\@data2);
このような形でcallしていただければ、受け取りのほうで、配列への参照が受け取れますので。
メモリ効率を無視するのであれば、この後、受け取り手のほうで
sub cov{
@data1 = @{$_[0]};
@data2 = @{$_[1]};
という風に記述していただければ、配列を「配列のまま」渡すことが可能になります。
以上、何かの参考にでもなれば幸いです。
回答ありがとうございました。
この数日間で参照を学んだのでgalludaさんのいっていることがどういうことか分かりました。Perlの参照はCのポインタのようなもののようですね。
No.2ベストアンサー
- 回答日時:
それじゃアマ指向(ダサイ方法ってこと?)で…
@data1=(1,2,3,4,5);
@data2=(6,7,8,9,10);
$data=join '<1>',@data1,"<2>",@data2;
&stat::cov($data);
と、くっつけて渡した後、受け側で
($buf1,$buf2)=split(/<2>/,$_[0]);
@data3=split(/<1>/,$buf1);
@data4=split(/<1>/,$buf2);
と分離
…No1の回答を参考にしてください^^;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- その他(プログラミング・Web制作) pandasでまとめてインデックスを削除するにはどうすればいいですか? たとえば、以下のプログラムで 1 2022/07/31 23:09
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- Excel(エクセル) 格納したデータを配列のように扱う方法はありますか? 8 2023/06/05 08:53
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Ruby 初心者プログラミング 3 2022/10/12 11:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストファイルで提出とは?
-
bashスクリプト
-
【超初心者】異なるディレクト...
-
perlの正規表現などを用いたテ...
-
Strawberry Perl for Windows ...
-
perlのflock関数でロックをかけ...
-
ラズベリーパイ初心者です。 ラ...
-
Perlのエラーについてご教授く...
-
AI sisterとは、偽物の人ですか?
-
perlでリテラル値はメモリにど...
-
perlのrequireの動き方について...
-
perlの構文でカンマの意味が分...
-
perlのプログラミング 部分入れ...
-
perlをバージョンアップしたら...
-
Blenderについて
-
Perlで特定文字列から特定文字...
-
TeraPadエディターの操作方法に...
-
Perl 数値にスラッシュを入れる...
-
vlookupがうまくいきません、教...
-
Wallpaper Engineでおすすめの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列の中に重複文字列があるか...
-
Visual C++を用いたシリアル通信
-
perlで複数行のデータを自由に...
-
要素を削除する最適な方法
-
C言語のバイナリモードでのfsca...
-
Perl ファイルを読込んで日付の...
-
2次元の配列にデータを格納したい
-
pandasでまとめてインデックス...
-
[arduino]数値の大きなデータを...
-
行・列の整理! perl
-
<IN>; を単独で使う
-
データの日付でソートをしたい
-
PerlでInline Cを使った配列の...
-
perl-cgi 文字の長さでソートし...
-
Pythonでegrep機能をつかいたい
-
batファイルでrenameができませ...
-
awkスクリプトでダブルクォーテ...
-
VBAでCSVファイルの特定行を書...
-
ExcelをCSV書き出す場合のシー...
-
VBAでCSVファイルを途中行まで...
おすすめ情報