
No.2ベストアンサー
- 回答日時:
この手の関数は Perl上「名前を持った演算子」という扱いになっていて, その名前の*直後*に開きかっこがあると
対応する閉じかっこまでを引数とみなす
というルールがあります (cf.
https://perldoc.jp/docs/perl/5.26.1/perlop.pod
). つまり
print (split(/tab/,$str))[-2];
だと
print (split(/tab/,$str))
という関数呼び出しをしちゃうんです. そうさせないためには
print ((split(/tab/,$str))[-2]);
とさらにかっこを追加するとか, あるいは
print +(split(/tab/,$str))[-2];
のように「『直後』が開きかっこではない」ようにする必要があります.
だったら単純に
print split(/tab/,$str)[-2];
でいいんじゃないかって話になるんだけど... この場合, 多分 split の返り値がスカラーコンテキストになるからダメだと思う. 確認してないけど.
ついでに.
$ が付いていればスカラー, @ が付いていれば配列なので
・$array[-2] は配列 @array の後ろから 2番目の要素を表すスカラー
・@array[-2] は配列 @array の後ろから 2番目の要素のみからなる配列
という違いがあります... が, たぶんこの違いが表に出てくるケースはそんなにないんじゃないかなぁ.
No.1
- 回答日時:
print ((split(/tab/,$str))[-2]);
要素にアクセスするだけなら
(split(/tab/,$str))[-2]
でいいんだけどこの場合は print の引数になっているので単純に
print (split(/tab/,$str))[-2]
とするとエラーになるので「引数をくくる」かっこがもう 1組必要.
split の引数のかっこがなくてもいいと思えば
print ((split /tab/,$str)[-2]);
とも書ける.
ありがとうございます。
printの引数になるとエラーになるとのことですが、実は下記表記までは思いつき試したのですが試しそこで諦めていました。
ただ、これでも引数は1つに見えますがprintから見ると別のものに見えているのでしょうか?
print (split(/tab/,$str))[-2];
print @array[-2];と同じ意味になるような気がしたのです。
ただ、これを書いていて思ったのですが普通は$array[-2];が正しいと思いますが、$の代わりに@でも良いのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 6 2022/06/08 12:55
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- その他(プログラミング・Web制作) PythonでLoopを使って配列内の文字列を結合する。そして [] を削除する 1 2022/03/31 23:28
- HTML・CSS 全部のアクセスを指定したページに転送させたい 2 2022/06/28 16:33
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォルダ内の画像をランダムに...
-
二次元配列のインデックスについて
-
マクロ Publicでの配列定義
-
Dim flag(4) as boolean で配列...
-
perlのsplitでいきなりすぐに配...
-
クラスに配列を渡す方法
-
VBのReturnの使い方
-
VBA Dir関数でファイルをループ...
-
ハッシュ検索はなぜ速い
-
文字列を変数名として扱う方法
-
VB6の公式リファレンスはありま...
-
「偶数・奇数の和」のフローチ...
-
UWSCの終了の仕方
-
ループフリー
-
乱数の桁数指定、または範囲指定。
-
perlでファイルの拡張子を除い...
-
Javascriptでalertを大量のルー...
-
Do whileでExitせず、ループの...
-
短いハッシュの作り方
-
VBA for i=1 to lastrow
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
クラスに配列を渡す方法
-
二次元配列のインデックスについて
-
文字の整列(printf)
-
Dim flag(4) as boolean で配列...
-
マクロ Publicでの配列定義
-
エクセルVBAでTransposeの不思議
-
複数の配列の全ての組み合わせ...
-
Excel VBA ユーザーフォームの...
-
リストボックスに縦スクロール...
-
バイナリデータの検索(VB.NET2008)
-
可変長配列を、動的確保した固...
-
Strawberry Perl for Windows ...
-
perlで配列の要素が空なのを知...
-
if文条件式で配列を使用したい
-
VBScript 配列
-
VBA 二次元配列の1つ目を増...
-
二次元配列における要素数のは...
-
配列の各要素に文字列結合
-
Powershell $変数 = @()の空配...
おすすめ情報