問題タブ [diamond-operator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - Perl のダイヤモンド演算子: bash で実行できますか?
Perl のダイヤモンド演算子を bash でシミュレートする慣用的な方法はありますか? ダイヤモンド演算子を使用すると、
入力用に stdin を読み取り、
入力として file1 と file2 を読み取ります。
もう 1 つの制約は、自分のスクリプトへの入力以外の目的で script.sh の stdin を使用したいということです。以下のコードは、上記の file1 file2 ... の場合に必要なことを行いますが、標準入力で提供されるデータの場合は行いません。
私は Bash ソリューションを希望しますが、どの Unix シェルでも問題ありません。
編集:明確にするために、script.shの内容は次のとおりです。
Perl でひし形演算子が機能するようにこれを機能させたいのですが、現在のところ、引数としてのファイル名しか処理できません。
編集2:うまくいくことは何もできません
コマンドの標準入力はユーザーのデータではないためです。コマンドの標準入力は、ヒアドキュメントの私のデータです。ユーザー データをスクリプトの stdin に入れたいのですが、スクリプト内のコマンド呼び出しの stdin にすることはできません。
perl - <> 演算子を使用してファイル全体をスキップできますか?
次の Perl コードは明らかに非効率的です。
コードは、必要のないファイルのすべての行をステップ実行します。
この特定のスクリプトが実行されているファイルのサイズでは、これが顕著な違いをもたらす可能性は低いですが、学習のためです。<> が動作しているファイル全体をジャンクして、次のファイルに移動するにはどうすればよいですか?
これの目的は、このスクリプトが実行されるサーバーがファイル名にバージョン番号を含む古いバージョンのアプリを保存するためです。私は現在のバージョンにのみ関心があります。
perl - Perlのダイヤモンド演算子は非魔法の配列(@ARGVではない)を反復処理しますか?
次のことはうまくいくとは思いませんが、うまくいきます。
私の知る限り、Perlの演算子は、魔法のようにを繰り返すリテラル(の代わりに)<>
を除いて、ファイルハンドルやグロブなどを処理する必要があります。<>
<FILEHANDLE>
@ARGV
私のテストと同じように機能するはずかどうか誰かが知っていますか?
perl - Perlのリストコンテキストでdiamond演算子を使用すると、閉じたファイルハンドルエラーが発生するのはなぜですか?
このコード:
このエラーが発生します:
理由はわかりません。
open
編集:元の投稿には、ステートメントに「<」ではなく「、」が含まれていました。
java - JDK7:ダイヤモンド推論構文の混乱
JDK7で次のコードをコンパイルしてみてください。
ひし形構文の2番目の使用法が機能しないのはなぜですか?
最初の使用法との大きな違いは何ですか?
java - Javaのひし形演算子(<>)のポイントは何ですか?
Java 7 のダイヤモンド演算子は、次のようなコードを許可します。
ただし、Java 5/6 では、次のように簡単に記述できます。
型消去についての私の理解では、これらはまったく同じです。(とにかくジェネリックは実行時に削除されます)。
なぜダイヤモンドを気にするのですか?どのような新しい機能/タイプ セーフが許可されますか? 新しい機能が得られない場合、なぜ彼らはそれを機能として言及するのですか? この概念に対する私の理解は間違っていますか?
perl - Perl の配列でダイヤモンド演算子を使用できないのはなぜですか?
コード
走る
なぜWay1
期待どおりに動作しないのかわかりませんWay2
。これらの 2 つの方法は同じではありませんか? ここで何が起きてるの?
perl - スカラー コンテキストでひし形演算子を関数呼び出しの引数として使用するにはどうすればよいですか?
ダイヤモンド演算子から関数 (サブ) に値を直接渡すにはどうすればよいですか?
私が試してみました:
しかし、関数の各引数に数字を入力するときに EOF を入力する必要があります。として動作し@array=<>
ます。のように動作させたい$var=<>
。したがって、入力は次のようになります。
perl - perlのdiamondオペレーターへの入力を偽造する方法は?
この質問への回答は、への入力を偽造する方法を説明してい<STDIN>
ます。私の目標はその質問に似ています:私のユニットテストはへの入力を偽造する必要があります<>
。
同じ手法をに偽の入力を適用すると<>
、機能しません。の入門レベルの説明<>
から、コマンドラインにファイルが指定されていないときにSTDINから読み取っていたと思いましたが、そうではないようです。
私が機能させようとしているサンプル:
fake2
動作しますが、fake1
動作しません。サンプルセッション(「qwerty」は私が入力することです):
私の質問:
- どうすれば入力を偽造でき
<>
ますか? - コマンドラインにファイルが指定されていない場合
<>
との違いは何ですか?<STDIN>
(つまり、リンクされた質問の手法が機能するのに機能しないのはなぜ<STDIN>
ですか<>
?)
ありがとう。