まず最初に、私はPerlを全く知らない。私は主に最後の1/2年のC++を勉強してきました。私はLinuxコマンドを教えているクラスに入っています。Linuxで使われている言語については、少し話題があります。Perlはループのために私を投げかけています。私は空白とタブで区切られた一連の乱数を含むテキストファイルを持っています。おそらく改行でさえ、ファイルハンドルを介してプログラムに読み込まれます。私は、数値の行を分割し、foreachループの内部で1つの配列にそれらをマージするコードの2行を書くことになっています。私は答えを探しているわけではなく、ちょうど正しい方向に微笑んでいます。私は何時間も違うことを試してきましたが、まったく愚かではありません。私はそれを得ることができません。私は完全に構文が失われています。ちょっとちょっと奇妙なことに、コンパイラの中で動作していないし、C++の外で働いている私の快適ゾーン外で働いている。ほんとうにありがとう。私はいくつかの写真を含んでいます。基本的には、数字とプログラムの残りの部分を保存するために書いているコードは、すべての数字の最小数と合計を決定します。私は何をすべきかわからないので、私の現在は間違っています。出力写真では、テキストファイルを介して入力されたすべての数値が表示されるので、それらを見ることができます。Perlの分割とマージの機能に問題がある
答えて
ここで解決するべきことはいくつかあります。まず、サンプルデータやコードのスクリーンショットを投稿しないでください。コードやデータをテストするためにコピー&ペーストすることは不可能です。あなたのコード/データを、4つのスペースとコードブロックの前の改行でインデントして投稿します。
お客様のスクリプトにuse strict;
を追加してください。これはあなたのクラスのレッスン0でなければなりません。その後、すべての変数宣言にmy
を追加します。
push
を使用せずに、あなたはこのようなものを使用することができ、各ラインの数字の内容で@all_numbers
を移入するには、次の
foreach my $line (@output_lines)
{
my @numbers = split /\s/, $line;
@all_numbers = (@all_numbers, @numbers);
}
私はあなたの配列にすべての分割要素を格納する必要が願っていますので、あなたはpush
機能を探しています。
foreach $line (@input_lines)
{
push(@all_numbers,split(/\s/,$line));
}
あなたの問題は、すべての反復で、分割さ値が一緒に追加しない配列で書かれた上にあります。これは新しい値で再初期化されるので、例えば、
@array = qw(one two three);
@array = qw(five four seven);
print "@array";
出力がfive four seven
one two three five four seven
ではありません。
:あなたは前にまたは例
@array = qw(one two three);
push(@array,qw(five four seven));
を参照してくださいにコードブロック、私はあなたに小さなタイプミスがあり、 '$ _'の代わりに' $ line'を分割するつもりだと思っています –
@CraigEstey Yaありがとうございました...投稿編集: – mkHun
私はそれについて "ニット"には嫌ったが、OPは彼が[おそらく]例で精度を必要とする段階にあります。また、これまでのところ、最もクリーンな/最速の方法であるpushを実行しているのは唯一の人です[sferncik _did_はそのドキュメントをリンクしてください] –
あなたはしていると言うために使用unshift
またはpush
後、配列に新たな価値を付加したい「の回答を探していない、」ので、ここであなたのナッジですあなたはほとんどそこにいます。各行をよく分割し(split/\s/
を使用)、数値を@all_numbers
に格納します。しかし、ループのたびに、の内容全体を現在の行にある番号に置き換えます(割り当てを使用して、@all_numbers = ...
を使用することに注意してください)。効果的には、前の行から保存したものすべてを捨ててしまいます。
には、@all_numbers
を置き換えずに、〜@all_numbers
を追加します。これを行う方法についてはpush() functionをご覧ください。
注:split()
の電話は問題ありませんが、この場合はsplit(' ', $line)
を使用するのがより一般的です。 (split()を参照してください:任意の空白で分割する場合は、/\s/
というパターンの代わりに、単一のスペース' '
を使用してください)
出力を見ると、出力が最後の行と私はそれを上書きしていると考えていましたが、配列の各要素へのアクセス方法はわかりませんでした。 C++では、配列の添え字内のループのインクリメントまたはデクリメントカウンタを使って新しい要素にアクセスしますが、ここではその方法を知りませんでした。私はプッシュ機能を見ていきますが、学習しているレッスンの範囲外になっている可能性があるので、代替案を見つけなければならないかもしれません。 –
ここでは 'push()'に慣れて使いたいと思っています。 Perl言語の中心にあります。そして、使用するのも簡単です。それから恥ずかしがり屋:-) – sferencik
別の方法:
my @all_numbers = map { split ' ', $_ } @output_lines;
- 1. Perl - "/"カンマで分割すると問題が発生します
- 2. 分析機能の問題
- 3. Perlの新機能 - 浮動小数点の比較に問題がある
- 4. 私のPHPコードに問題があり、データベースの機能を分割する必要があります
- 5. リソースのRESTfulマージと分割
- 6. C++問題のある機能、
- 7. CakePHPのルーティングとページ分割の問題
- 8. 分割ロジックの問題
- 9. 2007データベースアクセスの分割問題
- 10. SQLクエリの分割問題
- 11. Oracleの分割問題
- 12. スカラ線分割の問題
- 13. プロジェクトと問題ツールウィンドウの分割ビュー
- 14. vb.netの分割機能
- 15. T-SQLの分割機能
- 16. JavaScript:分割の機能
- 17. F#分割機能
- 18. バイナリ検索ツリーの削除機能に問題がある
- 19. PHPのデバッグ機能に問題がある
- 20. ループ分割分離の問題
- 21. Facebookのアプリケーションの機能に問題がありますか?
- 22. このコントローラの機能に問題がありますか?
- 23. Androidの分割は、分割機能について正しく
- 24. 私のコードでperlの無限ループに問題がある
- 25. Perl -dとmodulinoの問題
- 26. Perlグロブとファイルハンドルの問題
- 27. VBAのセルをマージするのに問題があります
- 28. 行列分割に関する問題
- 29. メソッド分割に関連する問題
- 30. Perl MySQL utf8mb4の問題/可能なバグ
私はそれが非常に不便だったことを認識します。私は検索可能にならないように、コードとコードの写真を掲載しました。私の教授がスタックオーバーフローをどの程度見ているのかは分かりません。彼らの誰も、しかし、コミュニティからの助けを使わないことに言及してきた人はいません。それは私の唯一の理由です。第二に、クラスはそれが進むにつれて巨大ですが、いずれかのトピックでかなりの時間を費やすことはありません。たとえば、Perlの講義では4時間しか費やしていませんが、私の2つの学期はすでにC++に専念しています。ありがとう、私はこれが本当に望んでいるものに近いと思う。 –
私はちょうど2番目のマージライン、おかげでトンをnotateする方法がわからなかった。 –
これはまさにそれでした。 100パーセント。ありがとう、トン。 –