質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

Q&A

解決済

1回答

2741閲覧

Perl split関数について

moana_39

総合スコア10

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

0グッド

0クリップ

投稿2016/11/24 03:25

###前提・実現したいこと
perl初心者です。前回perlを使って特定行の取り出し、かつ数字のみを抜き出すプログラムについて投稿させて頂きました。そこでsplit関数の使い方について少し勉強したのですが、疑問が残りました。先ほど回答して頂いた方のコードを参考に、再投稿させて頂きます。

###発生している問題・エラーメッセージ
test.logを読み込み、test.plを実行し以下のような結果を得たいと思っています。
しかし、何も表示されません。

test.log Summary: Total number of files: 36 Added files: 0 Removed files: 0 Changed files: 1 Updata files: 1

test.pl

perl

1open my $FH, '<', "test.log" or die $!; 2 3while ( $data = <$FH> ) { 4 chomp $data; 5 my ( $name,$dummy, $number ) = split /\s+/, $data; 6 7 print "$number\n" 8 if ( $name eq 'Total' ) .. ( $name eq 'Changed' ); 9} 10 11close $FH;

(目的の結果)
36
0
0
1

###試したこと
my ( $name,$dummy, $number ) = split /\s+/, $data;
の部分において、Total number of files:の前にスペースが二つあるので、my ( $blank,$space,$name,$dummy, $number ) = split /\s+/, $data;
のように記述したのですが、上手くいかず...

split関数において、空白の扱いがよくわかりません。
ご存じの方がいらっしゃいましたら、教えて頂きたいと思います。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

プログラミング言語を勉強するのでしたら、わからないことがあったときに言語の公式なマニュアルを参照するくせをつけて下さい。ひとつひとつの事項の理解が曖昧なままコードを書いていても、いつまでたっても上達しません。

  1. Perl (Perl 5) の公式マニュアルは、ほぼすべてが日本語訳されています (こちら)。
  2. splitは「関数」です。Perlの組み込み関数についてはperlfuncにまとめられています。
  3. splitの説明を一通り全部読んで、理解してください。

これで、splitの動きについては理解できると思います。その上でさらに何か疑問が生まれて、Perlの公式マニュアルを読んでも解決しなければ、また質問して下さい。

投稿2016/11/24 03:45

編集2016/11/24 03:46
ikedas

総合スコア4227

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moana_39

2016/11/24 03:53

参考サイトを提示していただき、ありがとうございます。もう一度split関数について勉強しなおし直します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問