---
name: "Catmandu::Fix::include"
section: "3pm"
platform: "linux"
package: "libcatmandu-perl"
version: "1.2024-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Catmandu::Fix::include"
---

# Catmandu::Fix::include(3pm)

include fixes from another file

## NAME

Catmandu::Fix::include - include fixes from another file

## SYNOPSIS

```
    include('/path/to/myfixes.txt')
    include('fixes/*.fix')
```

## NOTES

- path is relative to a Catmandu load path

  ```
      #1. a catmandu load path is a directory where a catmandu configuration file can be found
      #2. as there are multiple load paths, it will loop through all the path, and include the first file it can find
      #3. in catmandu, the default_load_path is either
      #   3.1. the directory of the running script
      #   3.2. the parent directory of the running script if the directory is 'bin'
      #use default load_path
      #called from script "/opt/catmandu-project/fix.pl"
      #default_load_path: /opt/catmandu-project
      #file must be located at "/opt/catmandu-project/fixes/myfixes.txt"
      Catmandu->fixer("include('fixes/myfixes.txt')");
      #use default load_path
      #called from script "/opt/catmandu-project/bin/fix.pl"
      #default_load_path: /opt/catmandu-project (notice the absence of 'bin')
      #file must be located at "/opt/catmandu-project/fixes/myfixes.txt"
      Catmandu->fixer("include('fixes/myfixes.txt')");
      #load fixes, located at /opt/catmandu-project/fixes/myfixes.txt
      Catmandu->load("/opt/catmandu-project");
      Catmandu->fixer("include('fixes/myfixes.txt')");
      #look for 'fixes/myfixes.txt' in /opt/catmandu-project2, and if that fails in /opt/catmandu-project-1
      Catmandu->load("/opt/catmandu-project2","/opt/catmandu-project-1");
      Catmandu->fixer("include('fixes/myfixes.txt')");
      #if "/opt/catmandu-project/fixes/myfixes2.txt" does not exists, the fix will fail
      Catmandu->load("/opt/catmandu-project");
      Catmandu->fixer("include('fixes/myfixes2.txt)");
  ```

- circular references are not detected

  - if the 'include' is enclosed within an if-statement, the fixes are inserted in the control structure, but only executed if the if-statement evaluates to 'true'.

  ```
      #the fixes in the file 'add_address_fields.txt' are only executed when field 'name' has content,
      #but, the fixes are included in the control structure.
      if all_match('name','.+')
          include('add_address_fields.txt')
      end
  ```

## SEE ALSO

Catmandu::Fix
