diff --git a/perm_example/perm_example.info b/perm_example/perm_example.info
new file mode 100644
index 0000000..7e7227f
--- /dev/null
+++ b/perm_example/perm_example.info
@@ -0,0 +1,4 @@
+name = Perm example
+description = Demonstrates how to use Drupal's perm API.
+core = 6.x
+package = Example modules
\ No newline at end of file
diff --git a/perm_example/perm_example.module b/perm_example/perm_example.module
new file mode 100644
index 0000000..7030af9
--- /dev/null
+++ b/perm_example/perm_example.module
@@ -0,0 +1,113 @@
+<?php
+
+/**
+ * @file
+ * Demonstrates use of the Perm API in Drupal - hook_perm()
+ */
+
+/**
+ * @defgroup perm_example Example: Perm API
+ * @ingroup examples
+ * @{
+ * Example using Perm API. (drupal 6)
+ *
+ * Demonstrates use of the Perm API in Drupal - hook_perm()
+ *
+ * This example is part of the Examples for Developers Project
+ * which you can download and experiment with here:
+ * http://drupal.org/project/examples
+ */
+
+/**
+ * Implements hook_help()
+ */
+function perm_example_help($path, $arg) {
+  switch ($path) {
+    case 'admin/help#perm_example':
+      return '<p>' .
+            t("This module demonstrates using hook_perm. You need the
+                'access perm_example' permission to be
+                able to see the restricted menu option.
+                There is an unrestricted menu option that provides a link
+                to the restricted menu option.") .
+            '</p>';
+  }
+}
+
+/**
+ * Implements hook_perm()
+ * @see http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hook_perm/6
+ */
+function perm_example_perm() {
+  // All you need to do to define different
+  // permissions for your module is to return
+  // an array of strings. Don't wrap your strings in t().
+  // The strings will appear under your module's group on the user
+  // permissions (admin/user/permissions) page.
+  // This example returns just one string.
+  return array('access perm_example');
+}
+
+/**
+ * Implements hook_menu()
+ */
+function perm_example_menu() {
+  // The purpose of this menu item is to give a free access
+  // page that points people to the restricted page
+  // By setting 'access callback' to TRUE, it makes the
+  // page available to everybody.
+  $items['perm_example/open'] = array(
+    'title' => 'Unrestricted Permission Example',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('perm_example_open_form'),
+    'access callback' => TRUE,
+  );
+  // The purpose of this menu item is to utilize the permission
+  // configured through hook_perm(). This is the real point
+  // of this module.
+  // Notice that the 'access arguments' are set to the same value
+  // as declared in hook_perm() above. However, you are not limited
+  // to permissions set by this module alone.
+  $items['perm_example/restricted'] = array(
+    'title' => 'Restricted Permission Example',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('perm_example_restricted_form'),
+    'access arguments' => array('access perm_example'),
+  );
+  return $items;
+}
+
+/**
+ * The unrestricted permission form.
+ */
+function perm_example_open_form() {
+  $form['intro'] = array(
+    '#value' => t("Everybody is able to get to this page. However,
+                  the link below will attempt to take you to the
+                  restricted page. If you don't have permission
+                  to view the page, you will get an
+                  'Access denied' message."),
+  );
+  $form['perm_trigger'] = array(
+    '#type' => 'item',
+    '#value' => l(t('Visit the restricted page.'), 'perm_example/restricted'),
+  );
+
+  return $form;
+}
+
+/**
+ * The restricted permission form.
+ */
+function perm_example_restricted_form() {
+  $form['intro'] = array(
+    '#value' => t('Congratulations! You have been granted access
+                  to the restricted page.'),
+  );
+  return $form;
+}
+
+/**
+ * @} End of "defgroup perm_example".
+ */
+
