---
name: "MP3::Tag::File"
section: "3pm"
platform: "linux"
package: "libmp3-tag-perl"
version: "1.16-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/MP3::Tag::File"
---

# MP3::Tag::File(3pm)

Module for reading / writing files

## NAME

MP3::Tag::File - Module for reading / writing files

## SYNOPSIS

```
  my $mp3 = MP3::Tag->new($filename);
  ($title, $artist, $no, $album, $year) = $mp3->parse_filename();
```

see MP3::Tag

## DESCRIPTION

MP3::Tag::File is designed to be called from the MP3::Tag module.

It offers possibilities to read/write data from files via **read()**, **write()**, **truncate()**, **seek()**, **tell()**, **open()**, **close()**; one can find the filename via the **filename()** method.

- **parse\_filename()**

  ```
    ($title, $artist, $no, $album, $year) = $mp3->parse_filename($what, $filename);
  ```

  **parse\_filename()** tries to extract information about artist, title, track number, album and year from the filename.  (For backward compatibility it may be also called by deprecated name **read\_filename()**.)

  This is likely to fail for a lot of filenames, especially the album will be often wrongly guessed, as the name of the parent directory is taken as album name.

  `$what` and `$filename` are optional. `$what` maybe title, track, artist, album or year. If `$what` is defined **parse\_filename()** will return only this element.

  If `$filename` is defined this filename will be used and not the real filename which was set by MP3::Tag with `"MP3::Tag->new($filename)"`.  Otherwise the actual filename is used (subject to configuration variable `"decode_encoding_filename"`).

  Following formats will be hopefully recognized:

  \- album name/artist name - song name.mp3

  \- album\_name/artist\_name-song\_name.mp3

  \- album.name/artist.name\_song.name.mp3

  \- album name/(artist name) song name.mp3

  \- album name/01. artist name - song name.mp3

  \- album name/artist name - 01 - song.name.mp3

  If artist or title end in `"(NUMBER)"` with 4-digit NUMBER, it is considered the year.

- **title()**

  ```
   $title = $mp3->title($filename);
  ```

  Returns the title, guessed from the filename. See also **parse\_filename()**.  (For backward compatibility, can be called by deprecated name **song()**.)

  `$filename` is optional and will be used instead of the real filename if defined.

- **artist()**

  ```
   $artist = $mp3->artist($filename);
  ```

  Returns the artist name, guessed from the filename. See also **parse\_filename()**

  `$filename` is optional and will be used instead of the real filename if defined.

- **track()**

  ```
   $track = $mp3->track($filename);
  ```

  Returns the track number, guessed from the filename. See also **parse\_filename()**

  `$filename` is optional and will be used instead of the real filename if defined.

- **year()**

  ```
   $year = $mp3->year($filename);
  ```

  Returns the year, guessed from the filename. See also **parse\_filename()**

  `$filename` is optional and will be used instead of the real filename if defined.

- **album()**

  ```
   $album = $mp3->album($filename);
  ```

  Returns the album name, guessed from the filename. See also **parse\_filename()** The album name is guessed from the parent directory, so it is very likely to fail.

  `$filename` is optional and will be used instead of the real filename if defined.

- **comment()**

  ```
   $comment = $mp3->comment($filename);   # Always undef
  ```

- **genre()**

  ```
   $genre = $mp3->genre($filename);       # Always undef
  ```

## POD ERRORS

Hey! **The above document had some coding errors, which are explained below:**

- Around line 184:

  \=over without closing =back
