```{index} single: lib_file (Config) ``` ```{index} single: Config::lib_file ``` # lib_file Return a one-line description of when and with what the interpreter was built. ## Synopsis ```perl use Config; print Config::compile_date(), "\n"; ``` ## What you get back A string such as `Compiled at Oct 8 2026 20:41:20`: when this pperl binary was built, in the layout perl uses, which `Config::Perl::V` and similar tools parse. `pperl -V` prints the same line. The compiler that built it is `$Config{ccversion}` and friends. Say under which path this interpreter sees a library file. ## Synopsis ```perl use Config; my $path = Config::lib_file("strict.pm"); my $path = Config::lib_file("ExtUtils/typemap"); my $path = Config::lib_file("Foo/Bar.pm", \@dirs); ``` ## What you get back The path of the file a `require` of that name would load, or `undef` when there is none. The name is a path below a library directory, with `/` between the parts, as in `%INC`. The path can be opened. A file that is part of the pperl binary is found first and reported as `./pperl-native/`: nothing on disk can take its place. Any other file is looked for in each directory of `@INC` in turn, and the first one that exists and is not a directory is reported. With a second argument, a reference to an array of directories, those are searched in place of `@INC`. The pperl binary's own files count only when `./pperl-native` is among them. A built-in module written in Rust has no Perl source. Opened under the path reported here it reads as three lines: its package, its `$VERSION` and a true value. ## Why it exists Perl's own way of asking is to walk `@INC` with `-e` or `-r` and take the first hit. The library inside the pperl binary can be opened but answers no file test, so that walk passes it by. A tool that must know where a module is, or which version would be loaded, asks here. ## Examples ```perl use Config; use ExtUtils::MakeMaker (); my $file = Config::lib_file("List/Util.pm"); print MM->parse_version($file), "\n" if defined $file; ```