1

ID3V2 タグ、つまり最初にアーティスト名を編集するための Perl コードを書き込もうとしていますが、検索して読み取ることはできますが、新しく書き込もうとすると、ファイルのすべてのコンテンツが新しいアーティスト名に置き換えられ、ファイルが破損します。私はこれに慣れていないので、以下のライブラリを使用するとは思わないので、私が試したコードは親切に教えてください。

#!/usr/bin/perl

use Fcntl qw( SEEK_SET );

my($fh, $filename, $byte_position, $byte_value);

$filename = $ARGV[0];

open(IN, "+>", $filename);
#open IN, $filename;

seek(IN,0,SEEK_SET);
read IN, $temp, 128;

print $temp;
print "\n";

seek(IN,14,SEEK_SET);
read IN, $temp, 16;
print "Artist is :" .$temp;
print "\n";


sysseek(IN,14,SEEK_SET);
#want to replace the Artist Name with new one.
syswrite (IN,$newArtist);

print "\n";

close(IN);
4

2 に答える 2

1

あなたのopen呼び出しはファイルを切り捨てます。ファイルを切り捨てずに読み取りおよび書き込み用に開くので+<はなく、を使用してファイルを開く必要があります。+>

詳細については、を参照perldoc -f openしてください。

于 2014-03-19T12:00:17.823 に答える