---
name: "File::Touch"
section: "3pm"
platform: "linux"
package: "libfile-touch-perl"
version: "0.12-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/File::Touch"
---

# File::Touch(3pm)

update file access and modification times, optionally creating files if needed

## NAME

File::Touch - update file access and modification times, optionally creating files if needed

## SYNOPSIS

```
 use File::Touch 0.12;
 @file_list = ('one.txt','../two.doc');
 $count = touch(@file_list);
 use File::Touch;
 $reference_file = '/etc/passwd';
 $touch_obj = File::Touch->new(
                  reference => $reference_file,
                  no_create => 1
              );
 @file_list = ('one.txt','../two.doc');
 $count     = $touch_obj->touch(@file_list);
```

## DESCRIPTION

This module provides both a functional and OO interface for changing the file access and modification times on files. It can optionally create the file for you, if it doesn't exist.

**Note**: you should specify a minimum version of 0.12, as per the SYNOPSIS, as that fixed an issue that affected systems that have sub-second granularity on those file times.

Here's a list of arguments that can be used with the object-oriented contruction:

- atime\_only =\> \[0\|1\]

  If nonzero, change only the access time of files. Default is zero.

- mtime\_only =\> \[0\|1\]

  If nonzero, change only the modification time of files. Default is zero.

- no\_create =\> \[0\|1\]

  If nonzero, do not create new files. Default is zero.

- reference =\> $reference\_file

  If defined, use timestamps from this file instead of current time. The timestamps are read from the reference file when the object is created, not when `"<-"`touch\>\> is invoked. Default is undefined.

- time =\> $time

  If defined, then this value will be used for both access time and modification time, whichever of those are set. This time is overridden by the `"atime"` and `"mtime"` arguments, if you use them.

- atime =\> $time

  If defined, use this time (in epoch seconds) instead of current time for access time.

- mtime =\> $time

  If defined, use this time (in epoch seconds) instead of current time for modification time.

## Examples

### Update access and modification times, creating nonexistent files

```
 use File::Touch;
 my @files = ('one','two','three');
 my $count = touch(@files);
 print "$count files updated\n";
```

### Set access time forward, leave modification time unchanged

```
 use File::Touch;
 my @files = ('one','two','three');
 my $day = 24*60*60;
 my $time = time() + 30 * $day;
 my $ref = File::Touch->new( atime_only => 1, time => $time );
 my $count = $ref->touch(@files);
 print "$count files updated\n";
```

### Set modification time back, update access time, do not create nonexistent files

```
 use File::Touch;
 my @files = ('one','two','three');
 my $day = 24*60*60;
 my $time = time() - 30 * $day;
 my $ref = File::Touch->new( mtime => $time, no_create => 1 );
 my $count = $ref->touch(@files);
 print "$count files updated\n";
```

### Make a change to a file, keeping its timestamps unchanged

```
 use File::Touch;
 my $date_restorer = File::Touch->new(reference => $file);
 # Update the contents of $file here.
 $date_restorer->touch($file);
```

## REPOSITORY

\<https://github.com/neilb/File-Touch\>

## AUTHOR

Nigel Wetters Gourlay (nwetters@cpan.org)

## COPYRIGHT

Copyright (c) 2001,2007,2009 Nigel Wetters Gourlay. All Rights Reserved. This module is free software. It may be used, redistributed and/or modified under the same terms as Perl itself.
