4

私はあなたを招待します、私に新しいものを引き裂いてください。

このコードは仕事を成し遂げます。IP のリストを含む .txt ファイルを取得し、それぞれの完全修飾ドメイン名を含むファイルを書き込みます。

このコードがどのように書かれているか知りたいです。ここにはどんな悪い習慣がありますか?

私はperlとプログラミングの初心者です。私はグーグルとトレイルアンドエラーを使ってこれをまとめることができました。それを機能させることは満足のいくものでしたが、どうすれば改善できるか教えてください。

use strict;
use warnings;
use Socket;
use autodie;


my $filename = 'IPsForFQDN.txt';
#File with list of IPs to lookup.
#One IP address per line like so:
#10.10.10.10
#10.10.10.11
#10.10.10.12
#etc...


open(my $fh, '<:encoding(UTF-8)', $filename)
    or die "Could not opne file '$filename' $!";
my $fqdn = '';

while (my $row = <$fh>) {
    chomp $row;

    print "$row\n";
    $fqdn = gethostbyaddr(inet_aton($row), AF_INET);
    print $fqdn;
    print "\n";
    open FILE, ">>fqdn.txt" or die $!;
    print FILE $fqdn;
    print FILE "\n";
    close FILE;

}
print "done\n";

たとえば、{chomp $row;} 行は必要ですか? 私はそれが何をするのか分かりません。

私も同様に {or die $!;} の全体に戸惑っています。

4

3 に答える 3

2

$!何かが失敗した理由を報告します。ここで、ファイルを開くことができなかった場合、失敗の理由が指摘されます。perlvarにはエラー変数に関するセクションがあります。

chompを使用して、各行の末尾から改行文字を削除しています。

少し異なる方法でopenを呼び出すファイルを作成する場合は、コードの早い段階で読み取るために開くときと同じ 3 つの引数バージョンを使用することを検討してください (open 用に提供したリンクも参照してください)、同じコーディング スタイルで。一貫性があるのは良いことですが、この方法はより安全です。

于 2014-03-06T16:45:56.613 に答える