Petri nets, even though very useful for modeling of discrete event systems, suffer from some weaknesses such as huge size, huge state space, and slow in simulation. Due to the huge state space, model checking a Petri net is difficult. Also, due to the slowness in simulation, discrete-timed Petri nets cannot be used for real-time applications. Thus, modular Petri nets are suggested as a way of overcoming these difficulties. In modular Petri nets, modules are designed, developed, and run independently, and the modules communicate with each other via inter-modular connectors. This approach is suggested for developing newer Petri net models. However, there exists a large number of Petri net models of real-life systems, and these legacy models are enormous and non-modular. And, these models cannot be discarded as large amounts of time and money were spent to develop these models. This paper presents a unique algorithm for extracting modules from large and legacy Petri net models. The algorithm extracts modules (known as "Petri modules") that are well-defined for inter-modular collaboration. Also, the extraction method preserves the structural properties. The goal of the paper is to introduce a methodology by which Petri nets can be moved to a new level in which a modular Petri net model can be made of Petri modules. The Petri modules are independent and can be hosted on different computers. These modules communicate via inter-modular components such as TCP/IP sockets. Since Petri modules are compact, also run faster, thus become suitable for supervisory control of real-time systems.